HighTec编译器提高编译速度
当我们工程特别大时(尤其是基于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等杀毒软件可以加快编译速度。
HighTec编译器提高编译速度相关推荐
- iOS - Xcode提高编译速度,增量编译,ccache
前言 贝聊目前开发的两款App分别是贝聊家长版和贝聊老师版,最近因为在快速迭代开发新功能,项目规模急速增长,单个端业务代码约23万行,私有库约6万行,第三方库代码约15万行,单个客户端的代码行数约60 ...
- 提高编译速度的方法——ccache的使用
在使用CMake编译大型工程时.如果每次只是单独对一个文件进行修改还好,CMake可以针对修改单独编译,但往往只要对CMakeLists做一点小修改,整个工程就要重新编译,对于普通性能的电脑来说通常非 ...
- 使用预编译头提高编译速度
什么是预编译头 在介绍预编译头之前,有必要了解一下C/C++的编译方式.C/C++的编译单元是源文件(带有.c..cc..cpp等扩展名的文件),在编译一个源文件之前,预处理器会把这个源文件中所有通过 ...
- Win10 WSL编译Android开启ccache(提高编译速度)
当你删掉out/target目录或者使用make clean清空输出重新编译源码的时候,编译时间通常都很漫长. 其实这个问题很容易解决,Android官方为我们带来了解决方案–ccache编译器缓存. ...
- linux qt jom,Qt Creator 使用技巧之提高编译速度【使用jom参数】
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/hsshh1988/article/de ...
- jom qt linux,Qt Creator 使用技巧之提高编译速度【使用jom参数】
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/hsshh1988/article/de ...
- 在VS中设置预编译头从而提高编译速度
- 如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度
1.前言 使用英飞凌单片机编译器 TASKING TriCore Eclipse IDE 开发编译时,想必感受最深刻的就是编译速度,那是非常慢了,如果是部分修改的源文件编译还好,不用等太久,而如果选择 ...
- 【转】Linux程序编译速度提高方法
项目越来越大,每次需要重新编译整个项目都是一件很浪费时间的事情.Research了一下,找到以下可以帮助提高速度的方法,总结一下. tmpfs 有人说在Windows下用了RAMDisk把一个项目编译 ...
最新文章
- Sql存储过程加密和解密
- 漫谈MySQL索引与字段儿长度的关系
- Vertx编程风格:您的反应式Web Companion REST API解释了
- JUnit5 测试套件示例
- 从C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mt.exe返回错误
- leetcode955. Delete Columns to Make Sorted II
- bookStore项目总结
- Vue动态设置Style属性
- 写作一篇SCI的13个要点(也适用社会科学SSCI)
- 关于阿里云ICON矢量图SVG上传问题
- latex中的对与错(对号与叉号)
- win10锁屏账户和计算机名,如何玩转Win10锁屏和主题
- html磁贴模板,文本磁贴模板(列表文件夹)(HTML)
- excel 对列数据进行去重操作
- 电离释放型动态水处理器
- 线段树维护(最大区间和,最大子段和,最长连续上升子序列)
- 用html语言设计李白的一首诗,李白诗《赠汪伦》教学设计
- Javaweb——监听器
- java批量去除pdf签名,删除签名图标
- HP刀片服务器更换两个硬盘后无法引导启动
热门文章
- 灵动微MM32SPIN560C的低压无刷电机应用方案
- Repo下载、编译AOSP源码:基于Ubuntu 21.04,android-12.1.0_r27
- 小程序input调用虚拟键盘阻止系统键盘与虚拟键盘点击穿透问题
- nkoj P8845 过滤空格
- android整机测试用例,Android_TestCase(测试用例)
- Shopee虾皮网|打造Shopee爆款前,必须分析七大数据!
- IT 从业者应该了解的著作权知识
- 手机android的文件怎么恢复,如何恢复安卓手机内置存储中已删除的文件
- PCIe及USB传输速度小结
- linux怎么安装smp系统,linux SMP系统学习笔记