buxoman 发表于 2010-05-31 19:31

关于分布式编译的问题,请大家出出主意。

我们的代码编译一次需要好几个小时,效率太低。boss要求采用分布式编译的办法来降低编译时间。

请问各位有没有相关经验或者想法?

buxoman 发表于 2010-05-31 22:16

用的是gcc 2.96的交叉编译器,目标CPU是PowerPC。我们都是在Windows平台上编译的。所以这个分布式编译,我也希望能在Windows平台上搞。我们的系统是用C写的。

我有个初步的想法,主控PC机上先把各个C文件进行预处理后,生成可编译的不依赖头文件的单个文件,然后把单个文件发送到分处理机上去编译成.o目标文件,最后把目标文件返回给主控机。

想请各位给点儿意见,谢谢!

jzhang918 发表于 2010-05-31 22:45

回复 2# buxoman


    distcc 应该可以。不过根据我的经验,最好还是买台好一点的服务器来做build server。双cpu,每个cpu 4 core/8 thread,一般够用了。在同样性能的情况下,这样总成本会比较低 (机器成本,人力成本,电费,空间,setup和维护复杂性)。

EricFisher 发表于 2010-06-01 14:56

升级机器。。。

prolj 发表于 2010-06-01 15:42

makefile在用么?每次都clean么?

EricFisher 发表于 2010-06-01 16:35

对于makefile的感受是,如果修改了一个共用的头文件,将是一个很费时的编译过程

buxoman 发表于 2010-06-01 21:02

回复buxoman


    distcc 应该可以。不过根据我的经验,最好还是买台好一点的服务器来做build serve ...
jzhang918 发表于 2010-05-31 22:45 http://linux.chinaunix.net/bbs/images/common/back.gif


    很不幸,从硬件上想办法,已经被否决了。

   所以只能用PC机来想办法。

buxoman 发表于 2010-06-01 21:05

对于makefile的感受是,如果修改了一个共用的头文件,将是一个很费时的编译过程
EricFisher 发表于 2010-06-01 16:35 http://linux.chinaunix.net/bbs/images/common/back.gif


    说起这个,也是很让人恼火。

由于没有加强这方面的管理,导致现在的整个makefile系统把头文件依赖关系搞乱了。

比如,很多人在头文件中会采用长长的链式宏定义,

// file1.h
#define A   5
//file2.h
#define B   A
// file3.h
#defineC B

在这种情况下,如果只是对A做一个修改,不会引起另外的头文件的自动更新。

jzhang918 发表于 2010-06-01 23:50

很不幸,从硬件上想办法,已经被否决了。

   所以只能用PC机来想办法。
buxoman 发表于 2010-06-01 21:02 http://linux.chinaunix.net/bbs/images/common/back.gif


    那就试试 distcc 吧,应该可以满足你的要求。

prolj 发表于 2010-06-02 09:24

头文件?C++里面最恼火的就是这个!
页: [1]
查看完整版本: 关于分布式编译的问题,请大家出出主意。