簡體   English   中英

模板 - 巨大的目標文件導致鏈接器崩潰

[英]Templates - huge object file causes linker crash

我有一個廣泛使用模板的源文件。 我在該文件中也有不同模板的顯式實例化......其中很多。 此文件是作為靜態庫的一部分編譯的。 我在多個平台上編譯這個庫,用於多種架構:Win x86,Linux x86和Linux ARM。 對於Linux版本,我使用不同的編譯器,因此生成的文件(我在這里討論的是ELF文件本身的上下文)是不同的:對於GCC,生成的目標文件大小為8.4MB,並且有超過40000個ELF部分; 對於ARM編譯器(armcc),生成的文件大小為12.7MB,並且有超過90000個ELF部分(!); 在這兩種情況下我都有調試信息。

發生的事情是,在鏈接時,ARM鏈接器會扼殺並死於嘗試鏈接靜態庫中的巨大目標文件。 經過一些調查后,它似乎無法處理其中包含超過65536個ELF部分的目標文件(我仍然必須得到編譯器供應商的確認,但是......或者我正在做一些完全徹底錯誤的事情)。 我發現的解決方案是將文件拆分為多個較小的文件(它的結構和內部允許的內容)。

問題:還有其他替代解決方案嗎? 在鏈接階段之前,編譯器是否可以在目標文件中生成額外的代碼(在模板的上下文中)?

使用ARM RVCT編譯器(armcc),嘗試將--remove_unneeded_entities添加到命令行。 根據您使用的編譯器版本,這可能會或可能不會產生太大影響,但值得一試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM