无法编译:无法识别的重定位

时间:2017-09-05 14:57:48

标签: c++ linux gcc opensuse ldd

我无法在电脑上编译任何东西。我不知道为什么,可能我已经安装了一些包装并弄得一团糟。我已经卸载并重新安装了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'

知道这是什么意思以及如何解决这个问题?

欢呼声

3 个答案:

答案 0 :(得分:15)

对于遇到此问题的其他任何人:我认为@ gabib44的问题是使用较旧版本的ld来链接使用较新版本构建的库。

"无法识别的搬迁"当重定位类型大于ld版本中最大的已知重定位类型时发生。 0x2aR_X86_64_REX_GOTPCRELX)目前是具有最大价值的重定位类型;我猜@ gabib44' s ld已经足够大了,不知道那之前的重定位类型(0x29R_X86_64_GOTPCRELX)。

当我使用binutils v2.26构建库时(我知道重定位0x2a),然后使用binutils v2.24将该库合并到构建机器上时,我自己遇到了这个问题

修复方法是构建要与旧版本binutils套件链接的库,或者在想要链接该库的计算机上升级ld

答案 1 :(得分:2)

我在另一篇文章中发现了这个:

[...编译时会出现此错误:

/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系统的新兴二进制文件,我终于还原了,并且由于optiz0r(用于解决我的问题)和Ryuno-Ki [m](让我知道)解决了问题关于optiz0rs在我退出时的回复。)

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

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

sudo binutils-config -l

可能会显示您可以输入的版本,而不是我使用的版本...] by necrophcodr»Tue Feb 06,20188 21:24 在https://forum.sabayon.org/viewtopic.php?f=57&t=34076&p=181260#p181260

它对我有用。

答案 2 :(得分:1)

我修复了安装gcc-32bit并删除其他各种数据包的问题