最近在实现一个分布式编译(实际是多机编译,哎,为了毕业不容易)的工具,是基于google开源的一个工具:ninja来实现。目前已经实现了一个原型: https://github.com/zhchbin/DN ,能够将可以分发出去的编译任务发送到Slave机器运行,然后Master机器收集回编译好的目标文件,进而链接出可执行程序。
我知道做这方面开发的人可能很少,不过还是发出来问问,或者讨论讨论。
1
wodesuck 2015-02-20 23:44:55 +08:00
毕业论文?
|
2
sumhat 2015-02-20 23:57:10 +08:00 1
文件传输:编译器做的事情基本上就是把一堆小文件(源代码文件)翻译成一个大文件(二进制文件)。源文件放在 git (或 svn)上,二进制文件先在各个 Slave 之前传送(有依赖关系),再回收到 Master 上,于是对网络的要求是对两种模式的文件传输都要高效。
根据依赖关系计算编译时间:整个编译过程中,每个 Slave 要花差不多的时间,这样才可以把单机总时间降为 1/N。如果某个(或某些) Slave 等待了太久没事做,那还不如在单机上编译。 |
3
zhchbin OP |
4
JamesRuan 2015-02-21 11:40:52 +08:00 via Android
gentoo上的distcc 不知已经存在多少年了。
|
5
zhchbin OP |
7
benjiam 2015-02-21 16:29:16 +08:00 via Android
对的,我有这方面的想法。本质就是平行的编译每个obj文件 然后集中再link。但我觉得只有CPP有这个需求。
|