[发明专利]一种静态库的生成方法以及设备在审
申请号: | 201610721491.8 | 申请日: | 2016-08-24 |
公开(公告)号: | CN108304187A | 公开(公告)日: | 2018-07-20 |
发明(设计)人: | 邱寅峰 | 申请(专利权)人: | 北京花甲科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/53 |
代理公司: | 北京博雅睿泉专利代理事务所(特殊普通合伙) 11442 | 代理人: | 马佑平 |
地址: | 100084 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 静态库 对象文件 中间代码 源代码 函数信息 全程序 链接 编译 泄露 视角 保留 安全 | ||
本发明公开了一种静态库生成方法及设备。该方法包括:编译源代码,获得对应的初步对象文件和初步中间代码;链接多个初步对象文件以及对应的初步中间代码,生成不包含函数信息的目标中间代码。根据本发明,可以使得静态库中为提供“全程序视角”保留的对象文件之间接口不会泄露静态库的实现细节。规避相应的安全风险和商业风险。
技术领域
本发明涉及计算机领域,更具体地,涉及一种静态库的生成方法及设备。
背景技术
现有技术中,软件开发者们可以根据自身软件开发的需求,通过互联网下载或者其他软件开发者或者厂商的提供的SDK(Software Development Kit,软件开发工具包),将这些SDK包含或集成到自身开发的软件中,辅助开发和运行。
而对于提供SDK的软件开发者,通常发布的SDK中大多都包含静态库(又称静态链接文件,例如.a文件),使得获取SDK的第三方的软件开发者们,可以在软件开发过程中在代码链接阶段将静态库链接到软件应用中,辅助软件的开发。通常这些静态库由多个由源代码文件(例如c/c++源码文件)编译而成的对象文件(例如.o文件)打包或者压缩而成。
但发明人发现,现有技术中,至少存在这样一个问题:作为SDK的发布者,提供静态库时,需要保留静态库中各个对象文件之间的接口,使得获取SDK的其他第三方开发者在将SDK中包含的静态库链接到自己开发的代码时,可以通过各个对象文件之间的接口获取“全程序视角”进而在代码编译阶段进行优化等,但是,一般在默认情况下,各个对象文件之间的接口都是各个对象文件包含函数的函数名,而只要是一个良好的程序,本领域技术人员读取函数名就可以直接知道函数的实现原理,这就有可能导致发布SDK时泄漏静态库的实现细节,带来安全风险和商业风险。
发明内容
本发明的一个目的是提供一种用于生成静态库的新技术方案。
根据本发明的第一方面,提供了一种静态库的生成方法,包括:
编译源代码,获得对应的初步对象文件和初步中间代码;
链接多个所述初步对象文件时,链接对应的所述初步中间代码,生成不包含函数信息的目标中间代码,所述函数信息是用于识别所述目标中间代码对应的多个所述初步对象文件中包含的函数的实现原理的信息。
在一个实施例中,所述初步中间代码包含在对应的所述初步对象文件中。
在另一个实施例中,所述链接多个所述初步对象文件时,链接对应的所述初步中间代码,生成目标中间代码的步骤,包括:链接多个所述初步中间代码,生成临时中间代码;清除和/或混淆所述临时中间代码中的所述函数信息,生成所述目标中间代码。
在又一个实施例中,所述混淆所述临时中间代码中的所述函数信息的步骤,还包括:通过无意义符号混淆所述临时中间代码中的所述函数信息,所述无意义符号为与所述函数信息不存在关联的符号。
可选地,所述的静态库生成方法还包括:打包所述目标中间代码生成的目标对象文件,得到对应的静态库。
根据本发明的第二方面,提供一种静态库生成设备,包括:
编译单元,用于编译源代码,获得对应的初步对象文件和初步中间代码;
链接单元,用于链接多个所述初步对象文件时,链接对应的所述初步中间代码,生成不包含函数信息的目标中间代码,所述函数信息是用于识别所述目标中间代码对应的多个所述初步对象文件中包含的函数的实现原理的信息。
在一个实施例中,所述初步中间代码包含在对应的所述初步对象文件中。
在另一个实施例中,所述编译单元,包括:
用于链接多个所述初步中间代码,生成临时中间代码的装置;以及
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京花甲科技有限公司,未经北京花甲科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610721491.8/2.html,转载请声明来源钻瓜专利网。