首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法编译:无法识别的重定位

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

Stack Overflow用户
提问于 2017-09-05 22:57:48
回答 3查看 16.2K关注 0票数 10

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

这就是信息:

代码语言:javascript
复制
/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'

你知道这意味着什么以及如何解决这个问题吗?

干杯

EN

回答 3

Stack Overflow用户

发布于 2017-12-09 12:13:19

对于遇到这个问题的其他人:我认为@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。

票数 21
EN

Stack Overflow用户

发布于 2018-03-16 23:23:50

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

[编译时的...which会导致此错误:

代码语言:javascript
复制
/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-Kim解决了这个问题。

代码语言:javascript
复制
sudo binutils-config x86_64-pc-linux-gnu-2.29.1

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

代码语言:javascript
复制
sudo binutils-config -l

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

这对我很管用。

票数 4
EN

Stack Overflow用户

发布于 2017-09-06 14:57:36

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46058050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档