所以,當使用GCC編譯大量源文件時,可以使用-j來使用所有可用的內核。但是鏈接器呢?有沒有類似的選項來加快鏈接或GCC不支持多線程?在一些較大的項目纔可以真正需要一段時間...(...我討厭等待!)gcc可以在連接時使用多個核心嗎?
編輯:感謝指出-j是補充,而不是GCC/G ++一個選項。但是這並不能回答我的問題!我想知道gcc是否可以使用多線程,而連接一個程序!
所以,當使用GCC編譯大量源文件時,可以使用-j來使用所有可用的內核。但是鏈接器呢?有沒有類似的選項來加快鏈接或GCC不支持多線程?在一些較大的項目纔可以真正需要一段時間...(...我討厭等待!)gcc可以在連接時使用多個核心嗎?
編輯:感謝指出-j是補充,而不是GCC/G ++一個選項。但是這並不能回答我的問題!我想知道gcc是否可以使用多線程,而連接一個程序!
的-j
選項,您指的是由make
不gcc
處理。
使用make -j n
要求make
到具有多個並行的進程中運行在Makefile
的動作(具有號替換n
。在make -j 2
的情況下,它2
處理)。
在進行並行構建時,Make會處理大多數同步任務。
嘗試gold,這是由伊恩蘭斯泰勒等人開發的。來自Google,並作爲GNU binutils軟件包的一部分發布。
維基百科:
編寫黃金的動機是爲了使一個接頭,比GNU鏈接器速度更快,特別是對++大型應用程序編碼在C
我必須承認,我的天堂」 t自己嘗試過,但在WebKitGTK project網頁上提及。
欲瞭解更多信息,請參閱黃金作者寫的文章:A New ELF Linker。
更重要的是,請參閱由桑德Mathijs麪包車維恩增量/並行/並行連接的工作標題Concurrent Linking with the GNU Gold Linker和書目在其中。
lld,由LLVM項目開發的鏈接器默認會使用多個核心。我也發現它比使用多線程的黃金運行速度快一倍(-Wl,--threads -Wl,--thread-count,xxx
)
您可能對distcc http://distcc.org/感興趣,它可以讓您通過網絡中的多臺機器分發編譯內容。 – 2011-02-28 13:55:49
@Jon:我對並行編譯不感興趣,但並行鏈接! – Danvil 2011-03-01 10:43:39
爲什麼這個問題得到了降低?上帝知道gnu連接器是狗慢,並找到一些方法,使其更快地鏈接只會改善建設週期。 – greatwolf 2011-06-24 09:37:32