专利名称:一种编译时嵌入产品关键信息的方法和系统的制作方法
技术领域:
本发明涉及软件开发领域,特别涉及一种编译时嵌入产品关键信息的方法和系统。
背景技术:
嵌入端软件产品版本信息一般只包含本产品当前版本信息、产品名称等少量信息,没有自动嵌入产品的产品关键信息,后期产品维护/增值的信息资源不足。此外版本信息存放位置为数据区,编译前必须考虑对代码区的影响,且外部工具无法通过地址访问,必须要让嵌入端程序运行后通过指定接口访问,不够灵活。im,当遇到需要版本升级时,由于没有自动嵌入产品的产品关键信息,必须人工通过硬编码的方式加入所需的产品关键信息,一旦产品关键信息量增大到一定程度,且人为出错概率会呈指数上升,需要人为判断升级的必要性和可靠性,效率低。当人为失误导致错误的升级发生时,一般产品只能返厂维修,不仅用户体验不好,且给公司带来高昂的维护成本。
发明内容
本发明所要解决的技术问题是针对嵌入端软件的后期产品维护/增值的信息资源不足,提供一种编译时嵌入产品关键信息的方法和系统,将产品关键信息嵌入二进制生成软件中。根据本发明的一方面,本发明提供的一种编译时嵌入产品关键信息的方法包括以下步骤在编译脚本文件中将编译命令传入的产品关键信息字符串传到源文件中;在源文件中将产品关键信息通过宏定义转义,形成包含产品关键信息的源代码;在链接脚本文件中将包含产品关键信息的源代码单独生成为二进制文件中的一个段。优选地,上述在编译脚本文件中将编译命令传入的产品关键信息字符串传到源文件中的步骤进一步包括修改编译命令文件,通过使用命令开关来控制编译脚本文件打开不同的编译选项和编译命令;通过编译选项和编译命令获取需要编译的产品关键信息以及需要编译的产品关键信息所对应的源文件;将需要编译的产品关键信息传递给对应的源文件。优选地,上述在链接脚本文件中将包含产品关键信息的源代码单独生成为二进制文件中的一个段的步骤进一步包括将包含产品关键信息的源代码单独生成为一个段;在内存中寻找一个不会被修改的地址来存放。优选地,上述方法之后还包括通过查找二进制文件中的包含产品关键信息的段获取所需的产品关键信息。
进一步地,上述通过查找二进制文件中的包含产品关键信息的段获取所需的产品关键信息的步骤进一步包括解析二进制文件的段存放格式;定位二进制文件中包含产品关键信息的段地址;按照源文件中定义的产品关键信息的结构来解析,获取所需的产品关键信息。优选地,产品关键信息包括产品名称、硬件版本、国家版本、当前软件版本、和/或历史兼容版本列表。根据本发明的另一方面,本发明提供的一种编译时嵌入产品关键信息的系统包括编译脚本文件、源文件和链接脚本文件,其中编译脚本文件,用于将编译命令传入的产品关键信息字符串传到源文件中;源文件,用于将产品关键信息通过宏定义转义,形成包含产品关键信息的源代码;链接脚本文件,用于将包含产品关键信息的源代码单独生成为二进制文件中的一个段。优选地,上述编译脚本文件具体用于修改编译命令文件,通过使用命令开关来控制编译脚本文件打开不同的编译选项和编译命令;通过编译选项和编译命令获取需要编译的产品关键信息以及需要编译的产品关键信息所对应的源文件;将需要编译的产品关键信息传递给对应的源文件。优选地,上述链接脚本文件具体用于将包含产品关键信息的源代码单独生成为一个段;在内存中寻找一个不会被修改的地址来存放。优选地,上述系统还包括外部工具软件,外部工具软件用于通过查找二进制文件中的包含产品关键信息的段获取所需的产品关键信息。通过本发明实施例的方法和系统,通过编译指令自动在二进制文件中嵌入产品关键信息,为后期产品维护/增值提供了丰富有效的信息源,提高了开发效率,同时将嵌入的产品关键信息单独存放在一个段内存储,使得外部工具软件能通过地址访问所需的产品关键信息,提高了信息被读取的灵活性。
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是本发明实施例提供的一种编译时嵌入产品关键信息的方法流程图;图2是本发明实施例提供的一种编译时嵌入产品关键信息的系统结构图;图3是本发明优选实施例提供的一种版本软件升级方法流程图。
具体实施例方式为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图1所示是本发明实施例提供的一种编译时嵌入产品关键信息的方法流程图,图中S101、在编译脚本文件中将编译命令传入的产品关键信息字符串传到源文件中;优选地,本步骤可以通过以下方式实现修改编译命令文件,通过使用命令开关来控制编译脚本文件打开不同的编译选项和编译命令;通过编译选项和编译命令获取需要编译的产品关键信息以及需要编译的产品关键信息所对应的源文件;将需要编译的产品关键信息传递给对应的源文件。S102、在源文件中将产品关键信息通过宏定义转义,形成包含产品关键信息的源代码;S103、在链接脚本文件中将包含产品关键信息的源代码单独生成为二进制文件中的一个段。优选地,本步骤可以通过以下方式实现修改链接脚本文件,将包含产品关键信息的源代码单独生成为一个段;在内存中寻找一个不会被修改的地址来存放。优选地,在具体应用时,为了能够提取所需的产品关键信息为实际需要所用,本实施例的方法之后还包括通过查找二进制文件中的包含产品关键信息的段获取所需的产品关键信息。具体地,上述步骤可以通过以下方式实现解析二进制文件的段存放格式;定位所述二进制文件中包含产品关键信息的段地址;按照源文件中定义的产品关键信息的结构来解析获取所需的产品关键信息。如图2所示是本发明实施例提供的一种编译时嵌入产品关键信息的系统模块结构图,图中该系统包括源文件21、编译脚本文件22和链接脚本文件23,其中编译脚本文件22,用于将编译命令传入的产品关键信息字符串传到源文件21中;源文件21,用于将产品关键信息通过宏定义转义,形成包含产品关键信息的源代码;链接脚本文件23,用于将包含产品关键信息的源代码单独生成为二进制文件中的一个段。优选地,编译脚本文件22具体用于修改编译命令文件,通过使用命令开关来控制编译脚本文件打开不同的编译选项和编译命令;通过编译选项和编译命令获取需要编译的产品关键信息以及需要编译的产品关键信息所对应的源文件。优选地,链接脚本文件23具体用于将包含产品关键信息的源代码生成的目标代码单独生成为一个段;在内存中寻找一个不会被修改的地址来存放。。优选地,在具体应用时,为了能够提取所需的产品关键信息为实际需要所用,本实施例的系统还包括外部工具软件,用于通过查找二进制文件中的包含产品关键信息的段获取所需的产品关键信息。比如外部工具软件为版本升级软件时,所需的产品关键信息包括产品名称、硬件版本、国家版本、当前软件版本、和/或历史兼容版本列表。通过上述实施例的方法和系统,通过编译指令自动在二进制文件中嵌入产品关键信息,为后期产品维护/增值提供了丰富有效的信息源,提高了开发效率,同时将嵌入的产品关键信息单独存放在一个段内存储,使得外部工具软件能通过地址访问所需的产品关键信息,提高了信息被读取的灵活性。优选实施例
如图3所示是本发明应用于版本升级的方法流程图,包括以下步骤:步骤S301、在源文件预定义版本升级所需的产品关键信息。具体地,本步骤中定义产品关键信息的结构体,并且用宏定义定义各结构体成员,以便在编译时能用外部传入的字符串变量替代。产品关键信息结构体声明举例如下:
权利要求
1.一种编译时嵌入产品关键信息的方法,其特征在于,所述方法包括以下步骤: 在编译脚本文件中将编译命令传入的产品关键信息字符串传到源文件中; 在源文件中将所述产品关键信息通过宏定义转义,形成包含产品关键信息的源代码;在链接脚本文件中将所述包含产品关键信息的源代码单独生成为二进制文件中的一个段。
2.根据权利要求1所述的方法,其特征在于,所述在编译脚本文件中将编译命令传入的产品关键信息字符串传到源文件中的步骤进一步包括: 修改编译命令文件,通过使用命令开关来控制编译脚本文件打开不同的编译选项和编译命令; 通过所述编译选项和编译命令获取需要编译的产品关键信息以及所述需要编译的产品关键信息所对应的源文件; 将所述需要编译的产品关键信息传递给对应的源文件。
3.根据权利要求1所述的方法,其特征在于,所述在链接脚本文件中将所述包含产品关键信息的源代码单独生成为二进制文件中的一个段的步骤进一步包括: 将所述包含产品关键信息的源代码单独生成为一个段; 在内存中寻找一个不会被修改的地址来存放。
4.根据权利要求1所述的方法,其特征在于,所述方法之后还包括:通过查找所述二进制文件中的包含产品关键信息的段获取所需的产品关键信息。
5.根据权利要求4所述的方法,其特征在于,所述通过查找所述二进制文件中的包含产品关键信息的段获取所需的产品关键信息的步骤进一步包括: 解析所述二进制文件的段存放格式; 定位所述二进制文件中包含产品关键信息的段地址; 按照源文件中定义的产品关键信息的结构来解析,获取所需的产品关键信息。
6.根据权利要求1-5任意一项权利要求所述的方法,其特征在于,所述产品关键信息包括:产品名称、硬件版本、国家版本、当前软件版本、和/或历史兼容版本列表。
7.一种编译时嵌入产品关键信息的系统,其特征在于,所述系统包括编译脚本文件、源文件和链接脚本文件,其中: 所述编译脚本文件,用于将编译命令传入的产品关键信息字符串传到所述源文件中;所述源文件,用于将所述产品关键信息通过宏定义转义,形成包含产品关键信息的源代码; 所述链接脚本文件,用于将所述包含产品关键信息的源代码单独生成为二进制文件中的一个段。
8.根据权利要求7所述的系统,其特征在于,所述编译脚本文件具体用于: 修改编译命令文件,通过使用命令开关来控制编译脚本文件打开不同的编译选项和编译命令; 通过所述编译选项和编译命令获取需要编译的产品关键信息以及所述需要编译的产品关键信息所对应的源文件; 将所述需要编译的产品关键信息传递给对应的源文件。
9.根据权利要求7所述的系统, 其特征在于,所述链接脚本文件具体用于:将所述包含产品关键信息的源代码单独生成为一个段; 在内存中寻找一个不会被修改的地址来存放。
10.根据权利要求7-9任意一项权利要求所述的系统,其特征在于,所述系统还包括外部工具软件,所述外部工具软件用于通过查找二进制文件中的包含产品关键信息的段获取所需的产品关键信 息。
全文摘要
本发明公开了一种编译时嵌入产品关键信息的方法和系统,应用于软件开发领域,该方法包括在编译脚本文件中将编译命令传入的产品关键信息字符串传到源文件中;在源文件中将产品关键信息通过宏定义转义,形成包含产品关键信息的源代码;在链接脚本文件中将包含产品关键信息的源代码单独生成为二进制文件中的一个段。本发明实施例的方法和系统通过编译指令自动在二进制文件中嵌入产品关键信息,为后期产品维护/增值提供了丰富有效的信息源,提高了开发效率,同时将嵌入的产品关键信息单独存放在一个段内存储,使得外部工具软件能通过地址访问所需的产品关键信息,提高了信息被读取的灵活性。
文档编号G06F9/45GK103077066SQ201310041380
公开日2013年5月1日 申请日期2013年2月2日 优先权日2013年2月2日
发明者夏彬 申请人:深圳市中兴移动通信有限公司