分布式编译 (转)

http://tech.ddvip.com/2009-02/1234335520108248.html

 

  减少基于 C/C++ 的系统的编译时间是所有发布和编译工程师所面对的主要挑战之一。本文研究一些可通过并行活动来加快编译过程的开源工具选项:将编译过程分布到本地网络中的多台机器上。本文中的讨论主要集中于 GNU make,因为它使用比较广泛。

  GNU make 中的 –j 选项

   默认情况下,make 是一个顺序工作的工具。它按次序调用底层编译器来编译 C/C++ 源。通常,C/C++ 源文件(通常带有 .cpp/.cxx 扩展名)不需以对方为基础即可编译。使用 –j 选项调用 make 来完成该操作。清单 1 显示的是一种典型的用法。

  清单 1. 典型的 GNU make 调用

make –j10 –f makefile.x86_linux

   –j -- 10 的参数是编译过程开始后能同时进行的最大编译数。如果没有给 -j 提供任何参数,则所有源文件都会在系统中排队,等待同时编译。在运行多核系统上的编译时,使用 -j 选项特别有用。要使用 -j 选项,必须先解决几个关键问题;这些问题将在下面部分讨论。

  使用 –j 选项时的问题和可能的解决方案

  首先要检查系 统配置。在低内存(<512MB RAM)系统上,同时编译的数量太多会因为分页而使系统变慢。在这种情况下会增加编译时间。您需要进行试验以得出系统的最佳 -j 值。另一种选择是使用 GNU make 工具的 –l 或 –load-average 选项,同时也使用 -j(它只在系统负载小于一定水平时才触发作业)。

  还可以使用同一个临时文件进行独立编译。请考虑清单 2 中所示的 make 代码片段。

...

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值