リンカfailerのヘルプ:.gnu.linkonce.tを
-
11-09-2019 - |
質問
私はトラブルのbinutils 2.18にはgcc 3.2.3を使用して共有ライブラリをリンクを抱えています。私は、私は次のエラーを取得するライブラリをリンクしようとすると:
_... .gnu.linkonce.tセクションに.rodataで参照:廃棄されたセクションで定義され.gnu.linkonce.t ...
私はこの上でグーグルのかなりの量をやったし、ほとんどの場所は、binutilsので2.17を導入し、後で2.18.50で修正され、それが回帰であることを示しているように見えるが、のための任意の特定の回避策があった場合は誰もが知っていた場合、私は興味がありましたbinutilsとgccを触れることなく問題ます。
感謝します。
解決
このシステムが異なるのbinutilsとgccのミスマッチた奇妙な結果であることが判明しました。 / usr / binに/ GCCを使用していた(3.2.3)と/ usr / local / binに/ LDが原因は/ usr / local / binがパスには/ usr /ビンの前にあることにそれを使用していました。私たちが、/ usr / binがパスの前にあったように切り替えた場合、適切なは/ usr / binに/ ldが(のbinutils 2.14)と呼ばれていた、これで問題が解決しているようだ。
他のヒント
このバグが見つかったと GCCのBugzilla 、バグに焦点を当て、小さなテストケースは、私は時間を無駄にしないように本当に便利であることが判明したコメントで提供されていました。このバグはGCC 3.4.6
を開始する修正されました。
GCC 3.3.1
とbinutils 2.15.92
でbinutils 2.17.50
を使用している間、私はこの問題を持っていたとの両方が動作しませんでした。だから、私にとってそれは明らかに問題を作っGCC
とbinutils
バージョンの混在ませんでした。
あなたはGCC
が提供するこのパッチを使用することができ、それは手動で再度古いH.J.
を再構築しない古いGCC
のバージョンを使用する必要がある場合。
修正のための正確な差分を示しているリンク内の添付を確認します。
私はそれを自分自身を行なったし、それをテストし、それが、「COMDATグループなし」最初の修正でGCC 3.3.1
にパッチを適用、首尾よく働いて、それを再構築し、binutils 2.15.92
とbinutils 2.17.50
でそれを使用しています。