1、背景:

在处理一些规模相对较大的工程时,编译花费的时间可能会很长。有时候我们会经常一遍一遍地编译相同的程序,此时,有了ccache情况就好多了。它将在第一遍编译时多花几秒钟,但接下来就会使编译成倍(5-10倍)的提速。

ccache

的基本原理是通过将头文件高速缓存到源文件之中而改进了构建性能,因而通过减少每一步编译时添加头文件所需要的时间而提高了构建速度。以下来了解下如何同时使用 ccache 和distcc 来使开发环境达到最佳性能。

2、引入ccache:

在标准的编译过程中,在 UNIX 下使用 C/C++ 开发应用程序通常需要用到一个编译器(如 gcc)以及一个编译工具(如 make)。make 和所有的 C 编译器的问题在于 C 预处理程序(preprocessor)和头文件的工作方式。观察一个典型的 C 源文件,您会发现其中有很多由 #include 所引用的各种头文件。每一次编译一个文件时,C 预处理程序(cpp)都会解析并引入每个头文件以及这些头文件引用到的任何文件。通过对内容进行解析,cpp 可以将一个相当基本的 1-KB 大小的源文件转化为一个 8-KB 大小的源文件,在这个过程中,会合并入几十个甚至几百个头文件。在典型的开发项目中,有很多与项目相关的头文件可能会在不同的源文件中多次被引入,而且每个头文件本身也可能引用很多其他头文件。这就是我们使用了N年的C编译器的基本编译理念,从C出现到如今,它带给人们无数编译成果的同时,也逐渐暴露出自身固有的缺憾。

在典型的编译过程中,make 工具只编译自上次编译后发生修改的文件,这样就在很大程度上简化了编译过程。make 将必须被编译的文件限制在经过修改的那些源文件范围之内,但是即使是使用 make,仍然有

c语言cache,高速C/C++编译工具ccache相关推荐

  1. 高速C/C++编译工具(ccache)

    http://blog.163.com/liuhonggaono1@126/blog/static/10497901201210254622141/ 好久没有写总结了,陌生了这博客,也陌生了文字,只觉 ...

  2. 高速的C/C++编译工具——ccache

    1.简介 ccache("compiler cache"的缩写)是一个编译器缓存,该工具会高速缓存编译生成的信息,并在编译的特定部分使用高速缓存的信息, 比如头文件,这样就节省了通 ...

  3. ccache 3.1.9 发布,高速C/C++编译工具

    ccache 3.1.9 修复了一些 bug,包括对 EAGAIN 信号的正确处理:编译大量错误输出所触发的问题:只读模式下不再创建缓存子目录:无法创建临时 stdout/stderr 文件时的错误报 ...

  4. ILSpy可以反编译c语言,ILSpy反编译工具的使用

    本文导读:ILSpy反编译工具的使用.不过,ILspy需要在电脑上安装.NET Framework 4.0.ILspy可以将一个dll文件转换为C#或VB语言.ILspy对于单个文件可以保存为.cs文 ...

  5. ccache高速编译工具

    ccache的主页:http://ccache.samba.org distcc的主页:http://distcc.samba.org 1.背景: 在处理一些规模相对较大的工程时,编译花费的时间可能会 ...

  6. c语言编译的手机软件,C语言编译工具

    软件介绍 C语言编译工具app是一款功能十分强大的手机编译.更换代码的软件工具,C语言编译工具app可以快速进行代码翻译.代码查找.替换等,它支持多种代码语言,欢迎下载! C语言编译工具app内容 简 ...

  7. C语言在线代码运行编译工具推荐

    C语言在线运行编译,是一款可在线编程编辑器,在编辑器上输入C语言代码,点击运行,可在线编译运行C语言,C语言代码在线运行调试,C语言在线编译,可快速在线测试您的C语言代码,在线编译C语言代码发现是否存 ...

  8. Lua语言在线代码运行编译工具推荐

    Lua语言在线运行编译,是一款可在线编程编辑器,在编辑器上输入Lua语言代码,点击运行,可在线编译运行Lua语言,Lua语言代码在线运行调试,Lua语言在线编译,可快速在线测试您的Lua语言代码,在线 ...

  9. PHP语言在线代码运行编译工具推荐

    PHP语言在线运行编译,是一款可在线编程编辑器,在编辑器上输入PHP语言代码,点击运行,可在线编译运行PHP语言,PHP语言代码在线运行调试,PHP语言在线编译,可快速在线测试您的PHP语言代码,在线 ...

最新文章

  1. Angular Filter实现页面搜索
  2. Java多线程安全问题解决的两种方式代码案例
  3. iOS - AsyncSocket 的使用
  4. ASP.NET控件开发基础5
  5. Android之内存机制分析-Android堆和栈
  6. ML《集成学习(三)Boosting和Adaboosting回归树》
  7. 数据库-结构化查询语言SQL概述
  8. win7ie11调用java失败,Win7 更新IE11 一直失败,请求
  9. RS485电路原理以及设计
  10. 十大经典算法图解(详细版)
  11. 读书笔记202208 TRC2010 Multi-agent model predictive control of signaling split in urban traffic networks
  12. 计算机应用专业,报软考应该选什么?
  13. 最大公约数和最小公倍数的关系
  14. leggedrobotics free gait 足式机器人自由步态 苏黎世机器人系统实验室
  15. 虚拟空间 搬迁 云服务器,服务器空间搬迁到虚拟主机
  16. 公共教室计算机安全调查报告论文,计算机实习调查报告.docx
  17. Lotka-Volterra模型
  18. C语言之指针知识大总结
  19. 大数据主要有什么用,入行大数据,需要学哪个专业?
  20. 癫痫磁共振成像:临床标准与进展

热门文章

  1. 移动页面滚动穿透解决方案(荐)
  2. 2021年安全员-A证考试报名及安全员-A证最新解析
  3. Windows10系统VC++6.0安装教程
  4. matlab ppt 赵银娣,中国矿业大学考研研究生导师简介-赵银娣
  5. 【ROS】官方tf教程turtle_tf2源码原理解读
  6. 记录第一个360浏览器翻译插件
  7. Ext.form.TextField与Ext.form.TextArea
  8. 压缩感知的实现——图像重建(含matlab代码)
  9. oracle避免回表,请教大家: 经常在sql调优过程中提到避免“回表”,具体是指什么意思???3Q...
  10. Spring学习总结(一)- Spring的核心特性之依赖注入(DI)总结