Question

Je parviens pas à lier une bibliothèque partagée à l'aide 3.2.3 avec gcc binutils 2.18. Lorsque je tente de relier la bibliothèque, je reçois l'erreur suivante:

.gnu.linkonce.t _... référencé dans la section .rodata: définie à l'article mis au rebut .gnu.linkonce.t ...

Je l'ai fait une bonne quantité de googler sur ce sujet et la plupart des endroits semblent indiquer qu'il est une régression introduit dans binutils 2.17 et plus tard fixé 18/02/50, mais je suis curieux de savoir si tout le monde savait que s'il y avait des solutions de contournement particulières pour la question sans avoir à toucher binutils et gcc.

Merci.

Était-ce utile?

La solution

avéré être un résultat étrange où le système a été désadaptation gcc avec un autre binutils. / Usr / bin / gcc a été utilisé (3.2.3) et / usr / local / bin / ld a été utilisé avec elle en raison de / usr / local / bin étant en face de / usr / bin dans le chemin. Lorsque nous sommes passés de telle sorte que / usr / bin était à l'avant du chemin, le approprié / usr / bin / ld a été appelé (binutils 2.14) et cela semble avoir résolu le problème.

Autres conseils

Ce bug a été trouvé et a été signalé ici GCC Bugzilla , une petite testcase qui met l'accent sur le bogue a été fourni dans les commentaires que je trouve qu'il est très utile de ne pas perdre du temps. Ce bug a été corrigé à partir GCC 3.4.6.

Je l'ai eu ce problème lors de l'utilisation GCC 3.3.1 avec binutils 2.15.92 et binutils 2.17.50 et les deux ne fonctionnent pas. Donc, pour moi, il était clairement pas le mélange des versions GCC et binutils qui ont fait le problème.

Si vous devez utiliser une version GCC plus vous pouvez utiliser ce patch fourni par H.J. et de le faire manuellement puis reconstruire votre ancien GCC nouveau.

Fix sans groupe COMDAT

Fix avec le groupe COMDAT

Vérifiez les liens dans les pièces jointes à condition que montre les différences exacte du correctif.

Je l'ai fait moi-même et testé avec succès et cela a fonctionné, le rapiéçage GCC 3.3.1 avec la première solution « sans groupe COMDAT », reconstruit et utilisé avec binutils 2.15.92 et binutils 2.17.50.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top