Aide avec failer éditeur de liens: .gnu.linkonce.t
-
11-09-2019 - |
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.
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.
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
.