我有一個源文件,廣泛利用的模板。 我也在那個文件中顯式實例化了不同的模板......其中很多。 該文件被編譯爲靜態庫的一部分。我在多個平臺上編譯這個 庫以用於多種體系結構:Win x86, Linux x86和Linux ARM。對於Linux構建我用不同的編譯器 因此產生的文件(我說的是這裏的ELF文件 本身的上下文中)是不同的:對於GCC生成的目標文件是8.4MB大小 並擁有40000多一點ELF部分;對於ARM編譯器(armcc) 生成的文件是12.7MB大小,擁有超過90000 ELF 部分(!);在這兩種情況下我都有調試信息。模板 - 龐大的目標文件會導致死機鏈接
會發生什麼事是,在鏈接時使用ARM鏈接器扼流圈和模具試圖 鏈接靜態庫巨大的目標文件。經過一番調查,似乎 ,它無法處理其中有超過65536 ELF部分的目標文件(我仍然有 從編譯器供應商獲得確認,雖然...或者我在做 某件事情完全和完全錯誤) 。我發現的解決方案是將文件拆分成多個較小的文件(它的結構和內部允許的內容)。
的問題(S):是否有任何其他的替代解決方案?難道是 可能編譯器生成的目標文件中額外的代碼(在模板的上下文中) 鏈接階段之前?
「一個未簽名的short應該足夠給每個人,沒有人會有超過65536個ELF部分...... 「 –