我无法链接共享库使用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。
谢谢。
我无法链接共享库使用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。
谢谢。
原来这是一个奇怪的结果,其中系统与不同的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),这似乎解决了这个问题。
发现此错误并在此处报告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
使用它。