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

gab*_*b44 10 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'
Run Code Online (Sandbox Code Playgroud)

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

干杯

Jak*_*nar 18

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

当重定位类型大于您的版本中最大的已知重定位类型时,会发生"无法识别的重定位" ld.0x2a(R_X86_64_REX_GOTPCRELX)目前是具有最大价值的重定位类型; 我猜@ gabib44 ld已经足够大了,不知道在那之前的重定位类型(0x29,R_X86_64_GOTPCRELX).

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

修复程序要么构建要与旧版本binutils套件ld链接的库,要么在要链接该库的计算机上进行升级.


gab*_*b44 1

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