gcc 无法编译:未识别的重新定位

pftdvrlh  于 2023-10-19  发布在  其他
关注(0)|答案(3)|浏览(164)

我无法在我的Linux pc上编译任何东西。我不知道为什么,可能我安装了一些软件包,弄得一团糟。我已经安装并重新安装了gcc和其他软件包,但没有好消息。还是这个问题。
这是一条信息:

/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-
linux/bin/ld: /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/crt1.o: unrecognized relocation (0x29) in section `.text'

任何想法是什么意思,以及如何解决这个问题?
欢呼

wnvonmuf

wnvonmuf1#

对于任何遇到此问题的人:我认为@gabib44的问题是使用旧版本的ld链接一个用新版本构建的库。
当重定位类型大于您的ld版本中已知的最大重定位类型时,会出现“无法识别的重定位”。0x2aR_X86_64_REX_GOTPCRELX)是当前具有最大值的重定位类型;我猜@gabib44的ld已经足够老了,不知道之前的重定位类型(0x29R_X86_64_GOTPCRELX)。
当我用binutils v2.26(它知道重定位0x2a)构建一个库,然后使用binutils v2.24将该库合并到构建机器上时,我自己就遇到了这个问题
修复方法是构建您想要链接到旧版本的binutils套件的库,或者在想要链接该库的机器上升级ld

mzmfm0qo

mzmfm0qo2#

我在另一篇文章中找到了这个:
[......编译时会出现以下错误:

/usr/lib/gcc/x86_64-pc-linux-gnu/6.4.0/../../../../x86_64-pc-linux-
gnu/bin/ld: /usr/lib/gcc/x86_64-pc-linux-
gnu/6.4.0/../../../../lib64/Scrt1.o: unrecognized relocation (0x2a) in 
section `.text'

在尝试了很多东西之后,包括从不同的Gentoo系统中出现的二进制文件,我终于恢复了,并解决了问题,感谢optiz 0 r(解决了我的问题)和Ryuno-Ki[m](让我知道optiz 0 rs在我注销时的回复)。

sudo binutils-config x86_64-pc-linux-gnu-2.29.1

很简单!您的问题的解决方案可能会有所不同,但运行

sudo binutils-config -l

可能会显示您可以输入的版本,而不是我使用的版本.]通过necrophcodr »星期二2018年2月06日21:24在https://forum.sabayon.org/viewtopic.php?f=57&t=34076&p=181260#p181260
对我很有效。

mznpcxlj

mznpcxlj3#

我修复了安装gcc-32位和删除各种其他包

相关问题