CN111796831B - 一种多芯片兼容的编译方法和装置 - Google Patents
一种多芯片兼容的编译方法和装置 Download PDFInfo
- Publication number
- CN111796831B CN111796831B CN202010590515.7A CN202010590515A CN111796831B CN 111796831 B CN111796831 B CN 111796831B CN 202010590515 A CN202010590515 A CN 202010590515A CN 111796831 B CN111796831 B CN 111796831B
- Authority
- CN
- China
- Prior art keywords
- makefile
- target
- file
- compiling
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/47—Retargetable compilers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供多芯片兼容的编译方法和装置,通过提取Makefile文件的共性特征信息、设置变量属性信息;根据所述共性特征信息与变量属性信息,获得通用Makefile文件模板;通过编译模块遍历所述通用文件模板中的待编译工程,记录所述待编译工程的依赖文件路径信息并替换所述通用文件模板中的第一变量值,确定所述通用文件模板的自动化配置信息;根据所述通用文件模板的自动化配置信息调用Make工具的增量编译机制,获得所述待编译工程的目标Makefile文件;通过所述Makefile文件中的规则信息和伪目标标签信息处理所述目标Makefile文件,获得编译生成的可执行文件。
Description
技术领域
本发明涉及软件开发技术领域,尤其涉及一种多芯片兼容的编译方法和装置。
背景技术
随着各类物联网应用的快速发展,嵌入式集成开发环境作为其应用开发平台而受到广泛关注。嵌入式集成开发环境特指面向嵌入式应用开发,具备工程管理、交叉编译、交叉调试、程序下载等特性的软件开发平台。物联网应用的快速发展极大地激发了嵌入式软件开发需求,同时对嵌入式IDE的功能性、适应性提出了更高的要求。
但本发明申请人发现现有技术至少存在如下技术问题:
现有的多数嵌入式集成开发环境仅支持一款芯片或特定厂商芯片的编译工作,造成嵌入式集成开发环境对于不同微控制器的编译兼容性与适应性不足。
发明内容
本发明实施例提供了一种多芯片兼容的编译方法和装置,解决了现有技术中多数嵌入式集成开发环境仅支持一款芯片或特定厂商芯片的编译工作,造成嵌入式集成开发环境对于不同微控制器的编译兼容性与适应性不足的技术问题,达到了加强通用集成开发环境编译模块的灵活性与可扩展性,可适用于多种芯片编译,提高编译适应性的技术效果。
鉴于上述问题,提出了本申请实施例以便提供一种多芯片兼容的编译方法和装置。
第一方面,本发明提供了一种多芯片兼容的编译方法,所述方法包括:获得文件目录中的Makefile文件,提取所述Makefile文件的共性特征信息;通过所述Makefile文件中支持的函数设置所述Makefile文件的变量属性信息;根据所述Makefile文件的共性特征信息与所述变量属性信息,获得多芯片的通用Makefile文件模板;通过编译模块遍历所述通用Makefile文件模板中的待编译工程,记录所述待编译工程的依赖文件路径信息并替换所述通用Makefile文件模板中的第一变量值,确定所述通用Makefile文件模板的自动化配置信息;根据所述通用Makefile文件模板的自动化配置信息调用Make工具的增量编译机制,获得所述待编译工程的目标Makefile文件;通过所述Makefile文件中的规则信息和伪目标标签信息处理所述目标Makefile文件,获得编译生成的可执行文件。
优选地,所述方法包括:
根据GNU交叉编译环境调用所述Make工具,在所述待编译工程的目标Makefile文件对应的目录下启动cmd窗口;根据多进程进制调用所述cmd窗口,且根据所述多进程进制设置隐藏所述cmd窗口,执行对所述目标Makefile文件编译信息的重定向输出,其中,所述目标Makefile文件在编译过程中生成的所述可执行文件在接收所述编译信息的输出流中获取。
优选地,所述Makefile文件的变量属性信息,包括:源文件及引用文件路径、链接文件路径、中间文件列表、引用文件列表、芯片内核、编译器优化等级。
优选地,所述根据所述通用Makefile文件模板的自动化配置信息调用Make工具的增量编译机制,包括:
获得所述通用Makefile文件模板替换所述依赖文件中一个或一个以上文件的修改日期;获得所述目标Makefile文件的日期;判断所述修改日期是否晚于所述目标Makefile文件的日期;当所述修改日期晚于所述目标Makefile文件的日期,确定调用Make工具的增量编译机制。
优选地,所述获得所述通用Makefile文件替换所述依赖文件中一个或一个以上文件的修改日期,包括:
判断所述依赖文件中一个或一个以上文件是否为头文件和/或包含类文件;当所述依赖文件中一个或一个以上文件为所述头文件和/或所述包含类文件时,确定所述编译模块执行一次工程清理;根据所述一次工程清理删除所述通用Makefile文件模板的中间文件,获得所述目标Makefile文件。
优选地,所述Makefile文件中的规则信息,包括:
设定所述Makefile文件中出现的第一个目标为默认目标;根据所述默认目标的生成规则生成第一目标文件;根据所述默认目标与所述第一目标文件确定第一依赖关系;根据所述第一依赖关系判断所述默认目标中有一个或一个以上文件的修改日期晚于所述第一目标文件,确定执行生成所述第一目标文件。
优选地,所述Makefile文件中的伪目标标签信息,包括:
定义第一伪目标,其中,将所述第一伪目标作为所述默认目标;将所述第一目标文件指定为所述第一伪目标的所述依赖文件;根据所述Makefile文件中的规则信息通过所述第一伪目标将所述依赖文件一次性生成多个第二目标文件;定义第二伪目标;根据所述第二伪目标执行一次性清理所述多个第二目标文件。
第二方面,本发明提供了一种多芯片兼容的编译装置,所述装置包括:
第一提取单元,所述第一提取单元用于获得文件目录中的Makefile文件,提取所述Makefile文件的共性特征信息;
第一设置单元,所述第一设置单元用于通过所述Makefile文件中支持的函数设置所述Makefile文件的变量属性信息;
第一获得单元,所述第一获得单元用于根据所述Makefile文件的共性特征信息与所述变量属性信息,获得多芯片的通用Makefile文件模板;
第一确定单元,所述第一确定单元用于通过编译模块遍历所述通用Makefile文件模板中的待编译工程,记录所述待编译工程的依赖文件路径信息并替换所述通用Makefile文件模板中的第一变量值,确定所述通用Makefile文件模板的自动化配置信息;
第二获得单元,所述第二获得单元用于根据所述通用Makefile文件模板的自动化配置信息调用Make工具的增量编译机制,获得所述待编译工程的目标Makefile文件;
第三获得单元,所述第三获得单元用于通过所述Makefile文件中的规则信息和伪目标标签信息处理所述目标Makefile文件,获得编译生成的可执行文件。
优选地,所述装置包括:
第一操作单元,所述第一操作单元用于根据GNU交叉编译环境调用所述Make工具,在所述待编译工程的目标Makefile文件对应的目录下启动cmd窗口;
第二操作单元,所述第二操作单元用于根据多进程进制调用所述cmd窗口,且根据所述多进程进制设置隐藏所述cmd窗口,执行对所述目标Makefile文件编译信息的重定向输出,其中,所述目标Makefile文件在编译过程中生成的所述可执行文件在接收所述编译信息的输出流中获取。
优选地,所述Makefile文件的变量属性信息,包括:源文件及引用文件路径、链接文件路径、中间文件列表、引用文件列表、芯片内核、编译器优化等级。
优选地,所述根据所述通用Makefile文件模板的自动化配置信息调用Make工具的增量编译机制,包括:
第四获得单元,所述第四获得单元用于获得所述通用Makefile文件模板替换所述依赖文件中一个或一个以上文件的修改日期;
第五获得单元,所述第五获得单元用于获得所述目标Makefile文件的日期;
第一判断单元,所述第一判断单元用于判断所述修改日期是否晚于所述目标Makefile文件的日期;
第二确定单元,所述第二确定单元用于当所述修改日期晚于所述目标Makefile文件的日期,确定调用Make工具的增量编译机制。
优选地,所述获得所述通用Makefile文件替换所述依赖文件中一个或一个以上文件的修改日期,包括:
第二判断单元,所述第二判断单元用于判断所述依赖文件中一个或一个以上文件是否为头文件和/或包含类文件;
第三确定单元,所述第三确定单元用于当所述依赖文件中一个或一个以上文件为所述头文件和/或所述包含类文件时,确定所述编译模块执行一次工程清理;
第六获得单元,所述第六获得单元用于根据所述一次工程清理删除所述通用Makefile文件模板的中间文件,获得所述目标Makefile文件。
优选地,所述Makefile文件中的规则信息,包括:
第二设置单元,所述第二设置单元用于设定所述Makefile文件中出现的第一个目标为默认目标;
第一生成单元,所述第一生成单元用于根据所述默认目标的生成规则生成第一目标文件;
第四确定单元,所述第四确定单元用于根据所述默认目标与所述第一目标文件确定第一依赖关系;
第五确定单元,所述第五确定单元用于根据所述第一依赖关系判断所述默认目标中有一个或一个以上文件的修改日期晚于所述第一目标文件,确定执行生成所述第一目标文件。
优选地,所述Makefile文件中的伪目标标签信息,包括:
第一定义单元,所述第一定义单元用于定义第一伪目标,其中,将所述第一伪目标作为所述默认目标;
第三操作单元,所述第三操作单元用于将所述第一目标文件指定为所述第一伪目标的所述依赖文件;
第二生成单元,所述第二生成单元用于根据所述Makefile文件中的规则信息通过所述第一伪目标将所述依赖文件一次性生成多个第二目标文件;
第二定义单元,所述第二定义单元用于定义第二伪目标;
第四操作单元,所述第四操作单元用于根据所述第二伪目标执行一次性清理所述多个第二目标文件。
第三方面,本发明提供了一种多芯片兼容的编译装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项所述方法的步骤。
第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述方法的步骤。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
本发明实施例提供的一种多芯片兼容的编译方法和装置,通过获得文件目录中的Makefile文件,提取所述Makefile文件的共性特征信息;通过所述Makefile文件中支持的函数设置所述Makefile文件的变量属性信息;根据所述Makefile文件的共性特征信息与所述变量属性信息,获得多芯片的通用Makefile文件模板;通过编译模块遍历所述通用Makefile文件模板中的待编译工程,记录所述待编译工程的依赖文件路径信息并替换所述通用Makefile文件模板中的第一变量值,确定所述通用Makefile文件模板的自动化配置信息;根据所述通用Makefile文件模板的自动化配置信息调用Make工具的增量编译机制,获得所述待编译工程的目标Makefile文件;通过所述Makefile文件中的规则信息和伪目标标签信息处理所述目标Makefile文件,获得编译生成的可执行文件,从而解决了现有技术中多数嵌入式集成开发环境仅支持一款芯片或特定厂商芯片的编译工作,造成嵌入式集成开发环境对于不同微控制器的编译兼容性与适应性不足的技术问题,达到了加强通用集成开发环境编译模块的灵活性与可扩展性,可适用于多种芯片编译,提高编译适应性的技术效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
图1为本发明实施例中一种多芯片兼容的编译方法的流程示意图;
图2为本发明实施例中一种多芯片兼容的编译装置的结构示意图;
图3为本发明实施例中另一种多芯片兼容的编译装置的结构示意图。
附图标记说明:第一提取单元11,第一设置单元12,第一获得单元13,第一确定单元14,第二获得单元15,第三获得单元16,总线300,接收器301,处理器302,发送器303,存储器304,总线接口306。
具体实施方式
本发明实施例提供了一种多芯片兼容的编译方法和装置,用于解决现有技术中多数嵌入式集成开发环境仅支持一款芯片或特定厂商芯片的编译工作,造成嵌入式集成开发环境对于不同微控制器的编译兼容性与适应性不足的技术问题。
本发明提供的技术方案总体思路如下:获得文件目录中的Makefile文件,提取所述Makefile文件的共性特征信息;通过所述Makefile文件中支持的函数设置所述Makefile文件的变量属性信息;根据所述Makefile文件的共性特征信息与所述变量属性信息,获得多芯片的通用Makefile文件模板;通过编译模块遍历所述通用Makefile文件模板中的待编译工程,记录所述待编译工程的依赖文件路径信息并替换所述通用Makefile文件模板中的第一变量值,确定所述通用Makefile文件模板的自动化配置信息;根据所述通用Makefile文件模板的自动化配置信息调用Make工具的增量编译机制,获得所述待编译工程的目标Makefile文件;通过所述Makefile文件中的规则信息和伪目标标签信息处理所述目标Makefile文件,获得编译生成的可执行文件,从而达到了加强通用集成开发环境编译模块的灵活性与可扩展性,可适用于多种芯片编译,提高编译适应性的技术效果。
下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
实施例一
图1为本发明实施例中一种多芯片兼容的编译方法的流程示意图。如图1所示,本发明实施例提供了一种多芯片兼容的编译方法,所述方法包括:
步骤110:获得文件目录中的Makefile文件,提取所述Makefile文件的共性特征信息。
具体而言,Makefile文件中指定了编译生成的目标文件、依赖文件及相应的控制指令。对于交叉编译模式(GNU)而言,需要配置大量参数方可将待编译工程正确编译。为了提高效率,GNU套件提供了Make工具以屏蔽各类GCC编译器指令,转而依赖Makefile文件控制底层程序从代码源文件到可执行文件的生成过程。对于Make工具来说,Makefile文件更类似于一种脚本文件,Make工具根据目标文件与源文件的关系,按照预定的指令,自动调用GNU套件中相关工具完成源代码至机器码的转换。通过启动Make工具,Make工具会在当前目录下自动搜索名为Makefile的文件。获得文件目录中的Makefile文件,提取Makefile文件的共性特征信息。
步骤120:通过所述Makefile文件中支持的函数设置所述Makefile文件的变量属性信息。
进一步的,所述Makefile文件的变量属性信息,包括:源文件及引用文件路径、链接文件路径、中间文件列表、引用文件列表、芯片内核、编译器优化等级。
步骤130:根据所述Makefile文件的共性特征信息与所述变量属性信息,获得多芯片的通用Makefile文件模板。
具体而言,由于芯片编译过程涉及源文件及引用文件路径、链接文件路径、芯片内核、优化等级等关键信息,因此,根据实际编译过程中需要的信息,将源文件及引用文件路径、链接文件路径、中间文件列表、引用文件列表、芯片内核、编译器优化等级等信息定义为Makefile文件的变量属性信息,方便针对不同芯片的信息修改。在定义这些变量的过程中使用到特定的Makefile文件中支持的函数,如wildcard、patsubst等。Makefile文件的变量属性信息中:(1)链接文件用于将目标文件和库文件链接生成可执行文件,编译过程中需指定链接文件的位置以指示Make工具完成必要工作。(2)生成文件名定义最终生成的各类目标文件(包括hex、elf、map等文件)的文件名。(3).c文件和.S/.s文件列表记录待编译工程中所有.c文件和.S/.s文件路径。编译过程中每个.c文件和.S/.s的编译工作是单独完成的,本申请实施例中将所有的待编译文件存放在同一目录下,利用Makefile文件中的隐晦规则,实现一条规则完成所有文件编译的效果。相较于其他集成开发环境,极大的简化了Makefile文件的书写。(4).o文件为.c和.S/s文件编译完成后生成的目标文件。生成最终文件过程中需要将所有的.o文件按链接文件指示生成可执行文件,因此需要提供.o文件列表(记录文件路径)。(5)当前编译器提供了不同的优化级别,以方便开发者针对代码质量、编译时间、代码大小、资源消耗等做出取舍。根据Makefile文件的共性特征信息与变量属性信息,总结一般规律,设计出多芯片的通用Makefile文件模板。Makefile文件里主要包含5部分:显示规则、隐晦规则、变量定义、文件指示和注释。
步骤140:通过编译模块遍历所述通用Makefile文件模板中的待编译工程,记录所述待编译工程的依赖文件路径信息并替换所述通用Makefile文件模板中的第一变量值,确定所述通用Makefile文件模板的自动化配置信息。
具体而言,通过步骤130设计多芯片的通用Makefile文件模板后,在编译操作开始前,且在步骤130中已经将.c\S文件、头文件的路径定义为Makefile文件中的变量,通过编译模块遍历通用Makefile文件模板中的待编译工程,记录待编译工程的依赖文件路径信息并替换通用Makefile文件模板中的第一变量值,完成通用Makefile文件模板的自动化配置信息,能够在编译开始前对于文件的增删操作的结果得到及时的更新。其中,第一变量值为.c\S文件、头文件的路径等。举例而言,以KDS开发环境为例,在对待编译工程进行文件级增添或删除操作后,往往需要重新配置待编译工程文件信息,更新编译过程中文件包含信息,防止出现某一文件不存在或未被包含的编译错误,这种配置方式在工程文件较多且路径较深的情况下将为用户的操作带来诸多不便,通过完成Makefile文件模板的自动化配置后,这一过程对用户完全透明,方便用户操作。
步骤150:根据所述通用Makefile文件模板的自动化配置信息调用Make工具的增量编译机制,获得所述待编译工程的目标Makefile文件。
进一步的,所述根据所述通用Makefile文件模板的自动化配置信息调用Make工具的增量编译机制,包括:获得所述通用Makefile文件模板替换所述依赖文件中一个或一个以上文件的修改日期;获得所述目标Makefile文件的日期;判断所述修改日期是否晚于所述目标Makefile文件的日期;当所述修改日期晚于所述目标Makefile文件的日期,确定调用Make工具的增量编译机制。
进一步的,所述获得所述通用Makefile文件替换所述依赖文件中一个或一个以上文件的修改日期,包括:判断所述依赖文件中一个或一个以上文件是否为头文件和/或包含类文件;当所述依赖文件中一个或一个以上文件为所述头文件和/或所述包含类文件时,确定所述编译模块执行一次工程清理;根据所述一次工程清理删除所述通用Makefile文件模板的中间文件,获得所述目标Makefile文件。
具体而言,为方便开发人员对编译最终文件(如map,lst文件等)的查看以及对中间文件(.o和.d文件)处理。编译执行前,自动将编译所需C语言文件、汇编文件拷贝至新建的srcc及srcs文件夹,同时新建obj文件夹用于存放编译产生的中间文件,而编译产生的最终文件及Makefile文件生成在同级目录下。如果每次编译开始前都将源文件拷贝至对应目录,可保证编译过程中源文件的“时效性”,但文件的删除、拷贝操作在一定程度上影响整个编译过程的执行速度。通过获得通用Makefile文件模板替换依赖文件中一个或一个以上文件的修改日期,获得目标Makefile文件的日期。也就是说,编译模块执行源文件拷贝操作前,将比较当前待编译工程下待拷贝源文件的修改日期是否晚于目标Makefile文件的目录下同名文件的修改日期。判断修改日期是否晚于目标Makefile文件的日期,当修改日期晚于目标Makefile文件的日期,确定调用Make工具的增量编译机制,将执行文件的拷贝覆盖操作,进而确定待编译工程的目标Makefile文件。每次编译开始前仅对修改过的源文件进行操作,可大幅减简化中间流程,加快编译的执行速度。如果开发过程中修改的是头文件或其他包含类文件(如.inc文件),在执行下一次编译之前编译模块将先执行一次工程清理操作,删除所有中间文件,再执行真正对源文件的编译。首先,判断依赖文件中一个或一个以上文件是否为头文件和/或包含类文件,当依赖文件中一个或一个以上文件为头文件和/或包含类文件时,确定编译模块执行一次工程清理。根据一次工程清理删除通用Makefile文件模板的中间文件,获得目标Makefile文件,对所有目标Makefile文件进行重新编译,避免目标Makefile文件中引入了修改的文件,保证修改后编译结果的正确性。
步骤160:通过所述Makefile文件中的规则信息和伪目标标签信息处理所述目标Makefile文件,获得编译生成的可执行文件。
进一步的,所述Makefile文件中的规则信息,包括:设定所述Makefile文件中出现的第一个目标为默认目标;根据所述默认目标的生成规则生成第一目标文件;根据所述默认目标与所述第一目标文件确定第一依赖关系;根据所述第一依赖关系判断所述默认目标中有一个或一个以上文件的修改日期晚于所述第一目标文件,确定执行生成所述第一目标文件。
具体而言,Makefile文件中的规则,描述了编译过程中目标文件的生成方式,其中,Makefile文件包含的规则具体为:(1)显示规则。显示规则指明了编译过程的目标文件、依赖的源文件,以及生成目标文件的相关指令。(2)隐晦规则。与显示规则相对,隐晦规则支持简略的书写命令,Make工具可利用自动推导功能得出文件的依赖关系和生成命令。比如,在Makefile中可以为相同文件夹下的多个目标文件指明一组依赖文件,而目标文件与依赖文件的对应关系以及相关命令无需显示说明。(3)变量定义。变量类似于C语言中的宏定义,一般为字符串,当Makefile文件被执行时变量会被替换到相应的引用位置上。(4)文件指示。文件指示类似于C语言的include关键字,可以包含其他Makefile文件。当编译工程较为庞大,涉及大量中间文件和依赖文件,尤其这些文件难以存放于同一目录时,可以利用多个Makefile文件将整个工程编译“分片”处理。(5)注释。与常见编程语言不同的是,Makefile文件中只有行注释,且必须以字符‘#’开头。设定Makefile文件中出现的第一个目标为默认目标,根据默认目标的生成规则一定被执行进而生成第一目标文件。根据默认目标与第一目标文件确定第一依赖关系,即默认目标为生成第一目标文件所要依赖的文件或其他目标文件。根据两者之间的第一依赖关系判断默认目标中有一个或一个以上文件的修改日期晚于第一目标文件,确定执行生成第一目标文件,即获得编译生成的可执行文件。
进一步的,所述Makefile文件中的伪目标标签信息,包括:定义第一伪目标,其中,将所述第一伪目标作为所述默认目标;将所述第一目标文件指定为所述第一伪目标的所述依赖文件;根据所述Makefile文件中的规则信息通过所述第一伪目标将所述依赖文件一次性生成多个第二目标文件;定义第二伪目标;根据所述第二伪目标执行一次性清理所述多个第二目标文件。
具体而言,伪目标仅是标签而非文件,所以Make工具无法生成它的依赖关系和决定它是否要执行。利用伪目标这个特性,可以实现普通文件目标及规则无法完成的操作,因此,可以利用伪目标的特性,实现一次Make生成包括可执行文件及map、lst文件在内的多个目标。首先,定义第一伪目标,如“all”的第一伪目标,其中,将第一伪目标作为目标Makefile文件的默认目标。将第一目标文件指定为第一伪目标的依赖文件。根据默认目标的规则一定会被执行的原则,所有依赖文件的生成规则都将被执行,即根据Makefile文件中的规则信息通过第一伪目标将依赖文件一次性生成多个第二目标文件。定义第二伪目标,如定义“clean”的第二伪目标,根据第二伪目标执行一次性清理命令,达到一次性清理多个第二目标文件,实现特殊的编译效果。
进一步的,所述方法包括:根据GNU交叉编译环境调用所述Make工具,在所述待编译工程的目标Makefile文件对应的目录下启动cmd窗口;根据多进程进制调用所述cmd窗口,且根据所述多进程进制设置隐藏所述cmd窗口,执行对所述目标Makefile文件编译信息的重定向输出,其中,所述目标Makefile文件在编译过程中生成的所述可执行文件在接收所述编译信息的输出流中获取。
具体而言,在正确安装交叉编译模式的编译套件后,Windows平台下调用Make工具可通过cmd窗口实现。在待编译工程的目标Makefile文件对应的目录下启动cmd窗口,根据多进程进制调用cmd窗口,且根据多进程进制设置隐藏cmd窗口显示,执行对目标Makefile文件编译信息的重定向输出,完成待编译工程的编译工作。其中,目标Makefile文件在编译过程中生成的可执行文件在接收编译信息的输出流中获取,进而实现编译信息的重定向输出,编译过程中的正确输出信息与最终的可执行文件的生成结果信息可在编译信息的重定向输出绑定的处理函数中获取,且一旦编译过程中发生警告或错误便会触发编译信息的重定向输出的响应函数。
进一步的,本实施例中的通用Makefile文件的多芯片兼容编译方法也可结合人工智能技术来实现,其中,人工智能(Artificial Intelligence,缩写为AI)亦称机器智能,是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。具体的步骤为:获得Makefile文件的照片;将所述Makefile文件的照片输入模型中,其中,所述模型为使用多组数据通过机器学习训练得出的,所述多组数据中的每组数据均包括:Makefile文件、用来标识所述Makefile文件的共性特征的第一标识信息以及用来标识所述Makefile文件的变量属性的第二标识信息;获取所述模型的输出信息,其中,所述输出信息为通用Makefile文件模板;其中的所述模型的输出信息是利用第一标识信息与第二标识信息中的Makefile文件的共性特征与变量属性设计出通用Makefile文件模板。进而依据待编译工程对通用Makefile文件模板自动化配置变量值,并根据增量编译机制对中间文件进行清理确定待编译的目标Makefile文件,调用Make工具结合Makefile文件中的规则信息和伪目标处理目标Makefile文件获得编译生成的可执行文件。
进一步的,本实施例中的训练模型是通过采用多组数据利用机器学习训练得出的,其中,机器学习是实现人工智能的一种途径,它和数据挖掘有一定的相似性,也是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。对比于数据挖掘从大数据之间找相互特性而言,机器学习更加注重算法的设计,让计算机能够白动地从数据中“学习”规律,并利用规律对未知数据进行预测。
进一步的,所述方法还包括:根据分散加载文件划分ARMCC编译器的存储空间,确定所述可执行文件的第一类数据的存放地址;设置所述ARMCC编译器下的堆栈指针的初始地址;判断ARMCC编译环境下中断向量表是否拷贝至RAM区域后进行动态修改;当所述ARMCC编译环境下中断向量表拷贝至RAM区域后进行动态修改时,确定保持所述中断向量表;根据划分所述可执行文件的第一类数据的存放地址、设置所述堆栈指针的初始地址与动态修改所述中断向量表,确定终端通用BIOS适用于所述ARMCC编译环境。
进一步的,所述方法还包括:获得GNU交叉编译环境下的第一支撑文件;获得ARMCC编译环境下的第二支撑文件;将所述待编译工程导入所述ARMCC编译环境,确定第一替换信息,其中,所述第一替换信息包含将所述第一支撑文件替换为所述第二支撑文件;获得所述GNU交叉编译环境下的第一芯片的第一启动文件;获得所述ARMCC编译环境下的第二芯片的第一启动文件;将所述待编译工程导入所述ARMCC编译环境,确定第二替换信息,其中,所述第二替换信息包含将所述第一启动文件替换为所述第二启动文件;根据所述第一替换信息与所述第二替换信息确定所述GNU交叉编译环境与所述ARMCC编译环境具有第一兼容性。
进一步的,所述方法还包括:获得GCC编译器下的有效链接文件;将所述有效链接文件复制转移至所述待编译工程的对应目录中,确定所述ARMCC编译环境下的第二芯片划分所述可执行文件的第一类数据的存放地址。
具体而言,编译是生成MCU可识别、运行机器码的过程,与MCU型号、内核、使用的库文件等密切相关,是检验代码质量与系统运行效果的前提。编译适应性表现在两方面,一是芯片适应性,即集成开发环境IDE支持不同系列、厂商微控制器MCU工程的编译;一是编译环境适应性,即对于不同编译器下的工程通过集成开发环境IDE本身的兼容性处理,能够适应不同编译器下工程的二次开发。
在本申请实施例中进行对于ARMCC环境的兼容性处理,首先,根据分散加载文件划分ARMCC编译器的存储空间,确定可执行文件的第一类数据的存放地址,其中,第一类数据是可执行文件的各类数据。设置ARMCC编译器下的堆栈指针的初始地址,在GCC编译环境下堆栈指针的默认值为RAM的最高地址,而在ARMCC环境下堆栈指针并没有初始赋值,其初始值与工程设置的具体堆、栈大小相关。因此ARMCC环境下的用户程序需要手动设置堆栈指针的初始地址,以保证系统“二次复位”时正确的堆栈状态。判断ARMCC编译环境下中断向量表是否拷贝至RAM区域后进行动态修改,当ARMCC编译环境下中断向量表拷贝至RAM区域后进行动态修改时,确定保持中断向量表。根据划分可执行文件的第一类数据的存放地址、设置堆栈指针的初始地址与动态修改中断向量表,确定终端通用BIOS适用于ARMCC编译环境。如果采用通过Flash操作重写中断向量表的方法,则在ARMCC编译环境下需重新调整Flash存储空间划分。
由于GCC编译器与ARMCC编译环境的工作机制不同,其相应的支撑文件也有所差异。在进行两种编译环境下工程的兼容时,需要替换部分文件,已支持相应编译器的工作。首先,获得GNU交叉编译环境下的第一支撑文件与ARMCC编译环境下的第二支撑文件。将待编译工程导入ARMCC编译环境,确定将第一支撑文件替换为第二支撑文件。进而获得GNU交叉编译环境下的第一芯片的第一启动文件与ARMCC编译环境下的第二芯片的第一启动文件。将待编译工程导入ARMCC编译环境,确定将第一启动文件替换为第二启动文件。根据第一替换信息与第二替换信息确定GNU交叉编译环境与ARMCC编译环境具有第一兼容性。
ARMCC环境下不存在链接文件,因此导入该环境下的待编译工程时,需将GCC编译器下STM32L431Rc的有效链接文件(作为模板存放在开发环境安装目录下)拷贝至目标工程对应目录,以确保编译时实现芯片正确的存储空间划分。首先,通过获得GCC编译器下的有效链接文件,将有效链接文件复制转移至待编译工程的对应目录中,确定ARMCC编译环境下的第二芯片划分可执行文件的第一类数据的存放地址,进而提升对编译环境的适应性,综合提升编译的兼容性。
实施例二
基于与前述实施例中一种多芯片兼容的编译方法同样的发明构思,本发明还提供一种多芯片兼容的编译方法装置,如图2所示,所述装置包括:
第一提取单元11,所述第一提取单元11用于获得文件目录中的Makefile文件,提取所述Makefile文件的共性特征信息;
第一设置单元12,所述第一设置单元12用于通过所述Makefile文件中支持的函数设置所述Makefile文件的变量属性信息;
第一获得单元13,所述第一获得单元13用于根据所述Makefile文件的共性特征信息与所述变量属性信息,获得多芯片的通用Makefile文件模板;
第一确定单元14,所述第一确定单元14用于通过编译模块遍历所述通用Makefile文件模板中的待编译工程,记录所述待编译工程的依赖文件路径信息并替换所述通用Makefile文件模板中的第一变量值,确定所述通用Makefile文件模板的自动化配置信息;
第二获得单元15,所述第二获得单元15用于根据所述通用Makefile文件模板的自动化配置信息调用Make工具的增量编译机制,获得所述待编译工程的目标Makefile文件;
第三获得单元16,所述第三获得单元16用于通过所述Makefile文件中的规则信息和伪目标标签信息处理所述目标Makefile文件,获得编译生成的可执行文件。
进一步的,所述装置包括:
第一操作单元,所述第一操作单元用于根据GNU交叉编译环境调用所述Make工具,在所述待编译工程的目标Makefile文件对应的目录下启动cmd窗口;
第二操作单元,所述第二操作单元用于根据多进程进制调用所述cmd窗口,且根据所述多进程进制设置隐藏所述cmd窗口,执行对所述目标Makefile文件编译信息的重定向输出,其中,所述目标Makefile文件在编译过程中生成的所述可执行文件在接收所述编译信息的输出流中获取。
进一步的,所述Makefile文件的变量属性信息,包括:源文件及引用文件路径、链接文件路径、中间文件列表、引用文件列表、芯片内核、编译器优化等级。
进一步的,所述根据所述通用Makefile文件模板的自动化配置信息调用Make工具的增量编译机制,包括:
第四获得单元,所述第四获得单元用于获得所述通用Makefile文件模板替换所述依赖文件中一个或一个以上文件的修改日期;
第五获得单元,所述第五获得单元用于获得所述目标Makefile文件的日期;
第一判断单元,所述第一判断单元用于判断所述修改日期是否晚于所述目标Makefile文件的日期;
第二确定单元,所述第二确定单元用于当所述修改日期晚于所述目标Makefile文件的日期,确定调用Make工具的增量编译机制。
进一步的,所述获得所述通用Makefile文件替换所述依赖文件中一个或一个以上文件的修改日期,包括:
第二判断单元,所述第二判断单元用于判断所述依赖文件中一个或一个以上文件是否为头文件和/或包含类文件;
第三确定单元,所述第三确定单元用于当所述依赖文件中一个或一个以上文件为所述头文件和/或所述包含类文件时,确定所述编译模块执行一次工程清理;
第六获得单元,所述第六获得单元用于根据所述一次工程清理删除所述通用Makefile文件模板的中间文件,获得所述目标Makefile文件。
进一步的,所述Makefile文件中的规则信息,包括:
第二设置单元,所述第二设置单元用于设定所述Makefile文件中出现的第一个目标为默认目标;
第一生成单元,所述第一生成单元用于根据所述默认目标的生成规则生成第一目标文件;
第四确定单元,所述第四确定单元用于根据所述默认目标与所述第一目标文件确定第一依赖关系;
第五确定单元,所述第五确定单元用于根据所述第一依赖关系判断所述默认目标中有一个或一个以上文件的修改日期晚于所述第一目标文件,确定执行生成所述第一目标文件。
进一步的,所述Makefile文件中的伪目标标签信息,包括:
第一定义单元,所述第一定义单元用于定义第一伪目标,其中,将所述第一伪目标作为所述默认目标;
第三操作单元,所述第三操作单元用于将所述第一目标文件指定为所述第一伪目标的所述依赖文件;
第二生成单元,所述第二生成单元用于根据所述Makefile文件中的规则信息通过所述第一伪目标将所述依赖文件一次性生成多个第二目标文件;
第二定义单元,所述第二定义单元用于定义第二伪目标;
第四操作单元,所述第四操作单元用于根据所述第二伪目标执行一次性清理所述多个第二目标文件。
前述图1实施例一中的一种多芯片兼容的编译方法的各种变化方式和具体实例同样适用于本实施例的一种多芯片兼容的编译装置,通过前述对一种多芯片兼容的编译方法的详细描述,本领域技术人员可以清楚的知道本实施例中一种多芯片兼容的编译装置的实施方法,所以为了说明书的简洁,在此不再详述。
实施例三
基于与前述实施例中一种多芯片兼容的编译方法同样的发明构思,本发明还提供一种多芯片兼容的编译装置,如图3所示,包括存储器304、处理器302及存储在存储器304上并可在处理器302上运行的计算机程序,所述处理器302执行所述程序时实现前文所述多芯片兼容的编译方法的任一方法的步骤。
其中,在图3中,总线架构(用总线300来代表),总线300可以包括任意数量的互联的总线和桥,总线300将包括由处理器302代表的一个或多个处理器和存储器304代表的存储器的各种电路链接在一起。总线300还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口306在总线300和接收器301和发送器303之间提供接口。接收器301和发送器303可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器302负责管理总线300和通常的处理,而存储器304可以被用于存储处理器302在执行操作时所使用的数据。
实施例四
基于与前述实施例中一种多芯片兼容的编译方法同样的发明构思,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:获得文件目录中的Makefile文件,提取所述Makefile文件的共性特征信息;通过所述Makefile文件中支持的函数设置所述Makefile文件的变量属性信息;根据所述Makefile文件的共性特征信息与所述变量属性信息,获得多芯片的通用Makefile文件模板;通过编译模块遍历所述通用Makefile文件模板中的待编译工程,记录所述待编译工程的依赖文件路径信息并替换所述通用Makefile文件模板中的第一变量值,确定所述通用Makefile文件模板的自动化配置信息;根据所述通用Makefile文件模板的自动化配置信息调用Make工具的增量编译机制,获得所述待编译工程的目标Makefile文件;通过所述Makefile文件中的规则信息和伪目标标签信息处理所述目标Makefile文件,获得编译生成的可执行文件。
在具体实施过程中,该程序被处理器执行时,还可以实现实施例一中的任一方法步骤。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
本发明实施例提供的一种多芯片兼容的编译方法和装置,通过获得文件目录中的Makefile文件,提取所述Makefile文件的共性特征信息;通过所述Makefile文件中支持的函数设置所述Makefile文件的变量属性信息;根据所述Makefile文件的共性特征信息与所述变量属性信息,获得多芯片的通用Makefile文件模板;通过编译模块遍历所述通用Makefile文件模板中的待编译工程,记录所述待编译工程的依赖文件路径信息并替换所述通用Makefile文件模板中的第一变量值,确定所述通用Makefile文件模板的自动化配置信息;根据所述通用Makefile文件模板的自动化配置信息调用Make工具的增量编译机制,获得所述待编译工程的目标Makefile文件;通过所述Makefile文件中的规则信息和伪目标标签信息处理所述目标Makefile文件,获得编译生成的可执行文件,从而解决了现有技术中多数嵌入式集成开发环境仅支持一款芯片或特定厂商芯片的编译工作,造成嵌入式集成开发环境对于不同微控制器的编译兼容性与适应性不足的技术问题,达到了加强通用集成开发环境编译模块的灵活性与可扩展性,可适用于多种芯片编译,提高编译适应性的技术效果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (9)
1.一种多芯片兼容的编译方法,其特征在于,所述方法包括:
获得文件目录中的Makefile文件,提取所述Makefile文件的共性特征信息;
通过所述Makefile文件中支持的函数设置所述Makefile文件的变量属性信息,所述Makefile文件的变量属性信息包括:源文件及引用文件路径、链接文件路径、中间文件列表、引用文件列表、芯片内核、编译器优化等级;
根据所述Makefile文件的共性特征信息与所述变量属性信息,获得多芯片的通用Makefile文件模板,通用Makefile文件模板包括显示规则、隐晦规则、变量定义、文件指示和注释;
通过编译模块遍历所述通用Makefile文件模板中的待编译工程,记录所述待编译工程的依赖文件路径信息并替换所述通用Makefile文件模板中的第一变量值,确定所述通用Makefile文件模板的自动化配置信息;
根据所述通用Makefile文件模板的自动化配置信息调用Make工具的增量编译机制,获得所述待编译工程的目标Makefile文件;
通过所述Makefile文件中的规则信息和伪目标标签信息处理所述目标Makefile文件,获得编译生成的可执行文件。
2.如权利要求1所述的方法,其特征在于,所述方法包括:
根据GNU交叉编译环境调用所述Make工具,在所述待编译工程的目标Makefile文件对应的目录下启动cmd窗口;
根据多进程进制调用所述cmd窗口,且根据所述多进程进制设置隐藏所述cmd窗口,执行对所述目标Makefile文件编译信息的重定向输出,其中,所述目标Makefile文件在编译过程中生成的所述可执行文件在接收所述编译信息的输出流中获取。
3.如权利要求1所述的方法,其特征在于,所述根据所述通用Makefile文件模板的自动化配置信息调用Make工具的增量编译机制,包括:
获得所述通用Makefile文件模板替换所述依赖文件中一个或一个以上文件的修改日期;
获得所述目标Makefile文件的日期;
判断所述修改日期是否晚于所述目标Makefile文件的日期;
当所述修改日期晚于所述目标Makefile文件的日期,确定调用Make工具的增量编译机制。
4.如权利要求3所述的方法,其特征在于,所述获得所述通用Makefile文件替换所述依赖文件中一个或一个以上文件的修改日期,包括:
判断所述依赖文件中一个或一个以上文件是否为头文件和/或包含类文件;
当所述依赖文件中一个或一个以上文件为所述头文件和/或所述包含类文件时,确定所述编译模块执行一次工程清理;
根据所述一次工程清理删除所述通用Makefile文件模板的中间文件,获得所述目标Makefile文件。
5.如权利要求3所述的方法,其特征在于,所述Makefile文件中的规则信息,包括:
设定所述Makefile文件中出现的第一个目标为默认目标;
根据所述默认目标的生成规则生成第一目标文件;
根据所述默认目标与所述第一目标文件确定第一依赖关系;
根据所述第一依赖关系判断所述默认目标中有一个或一个以上文件的修改日期晚于所述第一目标文件,确定执行生成所述第一目标文件。
6.如权利要求5所述的方法,其特征在于,所述Makefile文件中的伪目标标签信息,包括:
定义第一伪目标,其中,将所述第一伪目标作为所述默认目标;
将所述第一目标文件指定为所述第一伪目标的所述依赖文件;
根据所述Makefile文件中的规则信息通过所述第一伪目标将所述依赖文件一次性生成多个第二目标文件;
定义第二伪目标;
根据所述第二伪目标执行一次性清理所述多个第二目标文件。
7.一种多芯片兼容的编译装置,其特征在于,所述装置包括:
第一提取单元,所述第一提取单元用于获得文件目录中的Makefile文件,提取所述Makefile文件的共性特征信息;
第一设置单元,所述第一设置单元用于通过所述Makefile文件中支持的函数设置所述Makefile文件的变量属性信息,所述Makefile文件的变量属性信息包括:源文件及引用文件路径、链接文件路径、中间文件列表、引用文件列表、芯片内核、编译器优化等级;
第一获得单元,所述第一获得单元用于根据所述Makefile文件的共性特征信息与所述变量属性信息,获得多芯片的通用Makefile文件模板,通用Makefile文件模板包括显示规则、隐晦规则、变量定义、文件指示和注释;
第一确定单元,所述第一确定单元用于通过编译模块遍历所述通用Makefile文件模板中的待编译工程,记录所述待编译工程的依赖文件路径信息并替换所述通用Makefile文件模板中的第一变量值,确定所述通用Makefile文件模板的自动化配置信息;
第二获得单元,所述第二获得单元用于根据所述通用Makefile文件模板的自动化配置信息调用Make工具的增量编译机制,获得所述待编译工程的目标Makefile文件;
第三获得单元,所述第三获得单元用于通过所述Makefile文件中的规则信息和伪目标标签信息处理所述目标Makefile文件,获得编译生成的可执行文件。
8.一种多芯片兼容的编译装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-6任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-6任一项所述方法的步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010590515.7A CN111796831B (zh) | 2020-06-24 | 2020-06-24 | 一种多芯片兼容的编译方法和装置 |
US17/782,459 US11579856B2 (en) | 2020-06-24 | 2020-12-24 | Multi-chip compatible compiling method and device |
PCT/CN2020/139004 WO2021258692A1 (zh) | 2020-06-24 | 2020-12-24 | 一种多芯片兼容的编译方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010590515.7A CN111796831B (zh) | 2020-06-24 | 2020-06-24 | 一种多芯片兼容的编译方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111796831A CN111796831A (zh) | 2020-10-20 |
CN111796831B true CN111796831B (zh) | 2023-02-28 |
Family
ID=72804615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010590515.7A Active CN111796831B (zh) | 2020-06-24 | 2020-06-24 | 一种多芯片兼容的编译方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11579856B2 (zh) |
CN (1) | CN111796831B (zh) |
WO (1) | WO2021258692A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111796831B (zh) | 2020-06-24 | 2023-02-28 | 苏州大学 | 一种多芯片兼容的编译方法和装置 |
CN112306540A (zh) * | 2020-11-05 | 2021-02-02 | 重庆科技学院 | 一种多工程独立编译方法、系统、终端及介质 |
CN112506517A (zh) * | 2020-11-30 | 2021-03-16 | 天津飞腾信息技术有限公司 | 一种裸机系统级激励交叉编译系统及编译方法 |
CN112783508B (zh) * | 2021-02-01 | 2022-05-24 | 北京百度网讯科技有限公司 | 文件的编译方法、装置、设备以及存储介质 |
CN113254065B (zh) * | 2021-07-14 | 2021-11-02 | 广州易方信息科技股份有限公司 | 应用软件兼容方法及装置 |
CN115878121A (zh) * | 2021-09-30 | 2023-03-31 | 中兴通讯股份有限公司 | 终端代码增量编译方法、系统、装置、服务器和存储介质 |
WO2023245449A1 (zh) * | 2022-06-21 | 2023-12-28 | 北京小米移动软件有限公司 | 增量编译处理方法、装置、电子设备及存储介质 |
CN114924788B (zh) * | 2022-07-20 | 2022-12-27 | 北京达佳互联信息技术有限公司 | 代码同步方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101859244A (zh) * | 2009-04-10 | 2010-10-13 | 中兴通讯股份有限公司 | 多工具链工程构建方法及系统 |
CN105739992A (zh) * | 2016-02-26 | 2016-07-06 | 珠海煌荣集成电路科技有限公司 | 基于gcc编译器的软件控制内存分拆和映射的方法及系统 |
CN105867992A (zh) * | 2016-03-28 | 2016-08-17 | 乐视控股(北京)有限公司 | 代码编译方法和装置 |
CN108446412A (zh) * | 2017-02-16 | 2018-08-24 | 龙芯中科技术有限公司 | 存储器编译方法、装置及生成的存储器 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6862563B1 (en) * | 1998-10-14 | 2005-03-01 | Arc International | Method and apparatus for managing the configuration and functionality of a semiconductor design |
US6487713B1 (en) * | 1999-09-24 | 2002-11-26 | Phoenix Technologies Ltd. | Software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation |
US7168064B2 (en) * | 2003-03-25 | 2007-01-23 | Electric Cloud, Inc. | System and method for supplementing program builds with file usage information |
CN101697125B (zh) | 2009-11-04 | 2013-05-08 | 中兴通讯股份有限公司 | 一种开发环境转换的方法及装置 |
US8881122B1 (en) * | 2011-12-09 | 2014-11-04 | Google Inc. | Predicate matching library for complex program analysis |
CN103064722A (zh) | 2012-12-14 | 2013-04-24 | 北京思特奇信息技术股份有限公司 | 一种程序统一编译方法及系统 |
CN103279356B (zh) | 2013-06-04 | 2019-01-25 | 百度在线网络技术(北京)有限公司 | Makefile文件的自动生成方法和装置 |
US10061577B2 (en) * | 2014-10-14 | 2018-08-28 | Electric Cloud, Inc. | System and method for optimizing job scheduling within program builds |
CN110737429A (zh) | 2018-07-20 | 2020-01-31 | 北京君正集成电路股份有限公司 | 一种利用Makefile自身的依赖关系的模块化编译方法和装置 |
CN111796831B (zh) | 2020-06-24 | 2023-02-28 | 苏州大学 | 一种多芯片兼容的编译方法和装置 |
-
2020
- 2020-06-24 CN CN202010590515.7A patent/CN111796831B/zh active Active
- 2020-12-24 US US17/782,459 patent/US11579856B2/en active Active
- 2020-12-24 WO PCT/CN2020/139004 patent/WO2021258692A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101859244A (zh) * | 2009-04-10 | 2010-10-13 | 中兴通讯股份有限公司 | 多工具链工程构建方法及系统 |
CN105739992A (zh) * | 2016-02-26 | 2016-07-06 | 珠海煌荣集成电路科技有限公司 | 基于gcc编译器的软件控制内存分拆和映射的方法及系统 |
CN105867992A (zh) * | 2016-03-28 | 2016-08-17 | 乐视控股(北京)有限公司 | 代码编译方法和装置 |
CN108446412A (zh) * | 2017-02-16 | 2018-08-24 | 龙芯中科技术有限公司 | 存储器编译方法、装置及生成的存储器 |
Non-Patent Citations (2)
Title |
---|
祝叶等.基于LM3S101微控制器的可视化编程入门软件设计.《军民两用技术与产品》.2009, * |
聂章龙等.可重定目标的嵌入式集成开发平台设计.《单片机与嵌入式系统应用》.2007,(第8期), * |
Also Published As
Publication number | Publication date |
---|---|
CN111796831A (zh) | 2020-10-20 |
US20230004368A1 (en) | 2023-01-05 |
US11579856B2 (en) | 2023-02-14 |
WO2021258692A1 (zh) | 2021-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111796831B (zh) | 一种多芯片兼容的编译方法和装置 | |
JP7090778B2 (ja) | 影響分析 | |
EP0688448B1 (en) | Incremental build system | |
US5361357A (en) | Method and apparatus for optimizing computer file compilation | |
US5956479A (en) | Demand based generation of symbolic information | |
CN108874438B (zh) | 补丁生成方法、装置、电子设备及计算机存储介质 | |
US8122440B1 (en) | Method and apparatus for enumerating external program code dependencies | |
US20050015751A1 (en) | Automated program debugging tool | |
US6961931B2 (en) | Dependency specification using target patterns | |
JP4638484B2 (ja) | データ処理装置におけるデータ整合性 | |
US20110126179A1 (en) | Method and System for Dynamic Patching Software Using Source Code | |
EP2098954A1 (en) | Systems and methods for template reverse engineering | |
US9311077B2 (en) | Identification of code changes using language syntax and changeset data | |
Kahani et al. | Comparison and evaluation of model transformation tools | |
CN112394942A (zh) | 基于云计算的分布式软件开发编译方法及软件开发平台 | |
US20070050380A1 (en) | Nullable and late binding | |
Kloos et al. | Asynchronous liquid separation types | |
US20180253287A1 (en) | Method for translation of assembler computer language to validated object-oriented programming language | |
US5560010A (en) | Method for automatically generating object declarations | |
Cogumbreiro et al. | Memory access protocols: certified data-race freedom for GPU kernels | |
US11442845B2 (en) | Systems and methods for automatic test generation | |
CN115098158A (zh) | Sdk打包方法和装置、计算机设备及存储介质 | |
US5671431A (en) | Method for processing user program on a parallel computer system by inserting a tag during compiling | |
CN111767033A (zh) | 用于机械臂程序开发的编程系统及功能扩展方法 | |
US20120330878A1 (en) | Conventions for inferring data models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |