2010-11-02 29 views
1

我有一個不尋常的問題。在我工作的公司,我們的代碼庫中有很多源代碼,另外我們還使用了很多第三方庫。我們正在使用MSVC 2005.MSVC 2005鏈接器內存消耗問題

問題是,鏈接我們的可執行文件非常耗時(幾分鐘)。此外,連接器的內存使用量達到1.7 GB,而最終的可執行文件「恰好」爲22 MB。

我們不使用/ ltcg(鏈接時間代碼生成)選項。

我想鏈接器立即加載所有依賴關係的所有OBJ和LIB。但OTOH實際上並不是必須的:可以首先加載所有原始符號(沒有相應的代碼),然後構建依賴關係樹。然後,使用這棵樹,只加載代碼的相關部分。

有誰知道鏈接器行爲是否可以改變?也許存在相應的鏈接器選項。 MSVC 2008/2010中已修復此問題嗎?

謝謝

+0

也許不是你正在尋找的答案,但考慮將所有.lib移動到.dll。相關庫會變得很小,這將加速鏈接過程。 – Dialecticus 2010-11-02 13:03:07

+0

你說得對,我們考慮這個選項。然而,這會帶來其他問題,比如所有DLL版本的混亂。謝謝。 – valdo 2010-11-02 13:07:02

+0

我可能是錯的,但這是給你的東西嗎? http://blogs.msdn.com/b/ddperf/archive/2010/04/29/your-visual-studio-2010-dream-machine.aspx – 2010-11-25 18:34:48

回答

0

我第二個評論說,使用DLL。長期困擾Windows的DLL版本問題已經解決了IMO的並排組裝系統。

如果它在Visual Studio 2005中可用,請嘗試啓用增量鏈接。