HighTec编译器提高编译速度

您所在的位置:网站首页 hightec安装教程 HighTec编译器提高编译速度

HighTec编译器提高编译速度

2023-07-23 06:26| 来源: 网络整理| 查看: 265

当我们工程特别大时(尤其是基于AUTOSAR开发的工程,包含了BSW协议栈及MCAL,ASW的代码其c文件数量级可达上千)全编译一个工程需要很长时间。 HighTec是增量式编译,每次只重新编译修改的.c文件。当我们修改了某个c文件,在编译时make工具会根据c文件之间的依赖关系去编译影响到的c文件,从根本上说这时候编译时间不是我们能左右的。但我们还是可以通过设置Hightec配置来提高编译效率以及避免一些不必要的重复操作,这里提供四个优化思路供参考。 优化方法1:启用平行编译并将CPU核数设置为你电脑的CPU核数量 下图最右可以看到笔者的计算机核数为8,因此将"Use parallel jobs"设置为8从而充分发挥电脑的性能。选项“Stop on first build error”默认是选中状态,这样在编译时一旦出错就会停止继续编译;如果未选中,即使出现编译错误也会继续向下编译其它c文件直到编译结束。 在打开这里插入图片描述 优化方法2:避免每次都生成makefile文件 HighTec在编译时默认是根据工程源文件的组织结构首先生成makefile文件,然后执行“make makefile”指令来开始编译工程,注意是在你每次单击“编译”按钮时每次都会生成makefile文件。如果我们没有在工程中增加或删除c/h文件,每次HighTec生成的makefile是一样的,也即生成makefile步骤是重复执行的,因此我们可以将下图“Generate Makefiles automatically”选型去掉从而避免重复生成makefile。 在这里插入图片描述 但当去掉了“Generate Makefiles automatically”选项之后也会造成一些不便,如果你增加或删除了c/h文件或者执行了Hightec的“Clear All”指令,又不得不把这个选项重新打钩,显然又比较麻烦。因此这里提到的优化方法2请读者自行决定是否启用。 优化方法3:程序模块化,每个模块做成静态库 把程序模块化可以减少编译时间,具体做法是把整个工程按照功能分成若干个模块,每个模块建一个工程,工程设置为生成静态库文件而不是可执行elf文件,如下图。 在这里插入图片描述

另需再建一个集成工程,该集成工程中引用各个模块生成的库(libXXX.a),在该集成工程中编译并链接模块库最终生成可执行代码。关于如何使用库文件,可以参见公众号内另外的文章。https://mp.weixin.qq.com/s/wrtYfscOExRX4UuyhcFeNA 那么为什么这种做法可以减少编译时间呢?其实很容易明白模块化后假如修改了某个模块,只需要重新编译修改的模块和集成工程即可。这样相当于将修改“局部化”了,而不是之前一个修改可能会影响到整个工程。而且静态库只参与最后的Link环节,不需要编译,所以可以提高编译速度。 优化方法4:编译时关掉360等杀毒软件 实际测试发现,编译时关掉360等杀毒软件可以加快编译速度。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3