2011-02-28 24 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

相關問題