2011-02-28 96 views
24

所以,当使用GCC编译大量源文件时,可以使用-j来使用所有可用的内核。但是链接器呢?有没有类似的选项来加快链接或GCC不支持多线程?在一些较大的项目才可以真正需要一段时间...(...我讨厌等待!)gcc可以在连接时使用多个核心吗?

编辑:感谢指出-j是补充,而不是GCC/G ++一个选项。但是这并不能回答我的问题!我想知道gcc是否可以使用多线程,而连接一个程序!

+0

您可能对distcc http://distcc.org/感兴趣,它可以让您通过网络中的多台机器分发编译内容。 – 2011-02-28 13:55:49

+3

@Jon:我对并行编译不感兴趣,但并行链接! – Danvil 2011-03-01 10:43:39

+5

为什么这个问题得到了降低?上帝知道gnu连接器是狗慢,并找到一些方法,使其更快地链接只会改善建设周期。 – greatwolf 2011-06-24 09:37:32

回答

1

-j选项,您指的是由makegcc处理。

使用make -j n要求make到具有多个并行的进程中运行在Makefile的动作(具有号替换n。在make -j 2的情况下,它2处理)。

在进行并行构建时,Make会处理大多数同步任务。

4

尝试gold,这是由伊恩兰斯泰勒等人开发的。来自Google,并作为GNU binutils软件包的一部分发布。

维基百科:

编写黄金的动机是为了使一个接头,比GNU链接器速度更快,特别是对++大型应用程序编码在C

我必须承认,我的天堂” t自己尝试过,但在WebKitGTK project网页上提及。

欲了解更多信息,请参阅黄金作者写的文章:A New ELF Linker

更重要的是,请参阅由桑德Mathijs面包车维恩增量/并行/并行连接的工作标题Concurrent Linking with the GNU Gold Linker和书目在其中。

2

lld,由LLVM项目开发的链接器默认会使用多个核心。我也发现它比使用多线程的黄金运行速度快一倍(-Wl,--threads -Wl,--thread-count,xxx

相关问题