2017-09-05 128 views
0

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

的任何想法,这是什么意思,如何解决这个问题?

欢呼

+0

看起来目标文件与链接器不兼容? – AndyG

+0

我有gcc(SUSE Linux)4.8.5 和ldd(GNU libc)2.25。我花了几个小时试图理解它会是什么 – gabib44

回答

0

我固定安装GCC-32位和删除其他各种包

2

对于其他任何人遇到这样的问题:我想@ gabib44的问题是使用的ld一个较老版本的链接,有一个库用更新的版本构建。

当重定位类型大于您的ld版本中最大的已知重定位类型时,会发生“无法识别的重定位”。 0x2aR_X86_64_REX_GOTPCRELX)目前是最具价值的搬迁类型;我想@ gabib44的ld已经足够老了,不知道之前的搬迁类型(0x29,R_X86_64_GOTPCRELX)。

我有这个问题我自己,当我建立的binutils用一个v2.26库(该知道搬迁0x2a),但是如果使用的binutils v2.24

解决方法是要么合并构建机器上的图书馆构建要与旧版binutils套件链接的库,或在要连接该库的计算机上升级ld