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