Помогите с компоновщиком failer: .gnu.linkonce.t - PullRequest
8 голосов
/ 06 августа 2009

У меня проблемы с подключением разделяемой библиотеки с использованием gcc 3.2.3 и binutils 2.18. Когда я пытаюсь связать библиотеку, я получаю следующую ошибку:

.gnu.linkonce.t _... ссылка в разделе .rodata: определена в отброшенном разделе .gnu.linkonce.t ...

Я довольно много гуглил по этому вопросу, и большинство мест, кажется, указывают, что это регрессия, введенная в binutils 2.17 и позже исправленная в 2.18.50, но мне было любопытно, если кто-нибудь знал, есть ли какие-то конкретные обходные пути для проблема, не касаясь binutils и gcc.

Спасибо.

Ответы [ 2 ]

6 голосов
/ 07 августа 2009

Это оказалось странным результатом, когда система не соответствовала gcc с другим binutils. / usr / bin / gcc использовался (3.2.3) и / usr / local / bin / ld использовался с ним из-за того, что / usr / local / bin находится перед / usr / bin в пути. Когда мы переключились так, чтобы / usr / bin находился в начале пути, был вызван соответствующий / usr / bin / ld (binutils 2.14), и это, похоже, решило проблему.

0 голосов
/ 14 марта 2017

Эта ошибка была найдена и о ней сообщалось здесь 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

Исправлено с группой COMDAT

Проверьте вложения в предоставленных ссылках, которые показывают точную разницу для исправления.

Я сделал это сам и проверил, и он успешно работал, исправив GCC 3.3.1 с первым исправлением «без группы COMDAT», перестроил его и использовал с binutils 2.15.92 и binutils 2.17.50.

...