2009-08-06 115 views
8

我無法鏈接共享庫使用gcc 3.2.3與binutils 2.18。當我嘗試,我得到以下錯誤鏈接庫:幫助鏈接器failer:.gnu.linkonce.t

.gnu.linkonce.t _...第.RODATA引用:在廢棄部分.gnu.linkonce.t定義...

我在這方面做了大量的谷歌搜索,大多數地方似乎表明這是一個在binutils 2.17中的迴歸引入,後來被固定在2.18.50,但我很好奇,如果有人知道是否有任何特殊的解決方法,而沒有觸摸binutils和gcc。

謝謝。

回答

6

原來這是一個奇怪的結果,其中系統與不同的binutils gcc不匹配。/usr/bin/gcc被使用(3.2.3),並且/ usr/local/bin/ld與/ usr/local/bin/ld一起使用,因爲/ usr/local/bin位於路徑中的/ usr/bin前面。當我們切換到/ usr/bin位於路徑的前端時,相應的/ usr/bin/ld被調用(binutils 2.14),這似乎解決了這個問題。

0

發現此錯誤並在此處報告GCC bugzilla,在註釋中提供了一個關注該錯誤的小型測試用例,我發現它確實有助於不浪費時間。此錯誤已修復,從GCC 3.4.6開始。

我在使用GCC 3.3.1binutils 2.15.92binutils 2.17.50時都遇到了這個問題,兩者都不起作用。所以,對我來說,顯然不是GCCbinutils版本的混合,造成了問題。

如果您必須使用較舊的GCC版本,則可以使用H.J.提供的此修補程序並手動執行此操作,然後再次重建舊的GCC

Fix without COMDAT group

Fix with COMDAT group

檢查所提供的鏈接,顯示了修復的確切差異的附着物。

我已經做到了我自己和測試,它成功運行,與第一修復「沒有COMDAT組」修補GCC 3.3.1,重建它與binutils 2.15.92binutils 2.17.50使用它。