ld版本更新:解决/usr/bin/ld: libsdk.a(Imagexxx.cpp.o):unrecognized relocation (0x2a) in section `.text`()

在尝试编译source.f文件时遇到/usr/bin/ld错误,指出libsdk.a中的Imagexxx.cpp.o不识别重定位(0x2a)。通过查询ld版本,发现系统存在不同版本的ld。通过安装新的Binutils版本并更改gcc路径,最终解决了问题。建议使用develtool安装gcc以避免类似问题。

今天解决了一个困扰了很久的问题,偶然运行了flair中compile source.f文件,直接在lfluka下,报错:

/usr/bin/ld: libsdk.a(Imagexxx.cpp.o): unrecognized relocation (0x2a) in section .text
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status

参考了第一个链接内容,
查询了服务器中opt目录下可运行的ld版本
查询的命令是

$ ld -v

确定版本为
GNU ld version 2.32-16.el7
在这里插入图片描述

查询share目录下gcc使用的/usr/bin中ld版本为:
GNU ld version 2.25.1-32.base.el7_4.1

原因在此,决定安装新的Binutils版本

  1. 下载rpm包,失败,提示:
    在这里插入图片描述
    参考链接3,使用tar安装包安装到/usr
$ ./configure --prefix=/usr 

继续报错
在这里插入图片描述

考虑还是因为share目录中gcc运行有问题,换成opt目录下gcc

$ source /opt/rh/devtoolset-9/enable

按照链接3方法安装成功

tar -zxf binutils-2.32.tar.gz 
cd binutils-2.32
./configure --prefix=/usr
make 
make install在这里插入代码片
$ ld -v
GNU ld version 2.32-16.el7

然后新开窗口,注意我是命令行source …enable,再profile中这句是注释掉的,打开flair,编译成功

在这里插入图片描述

本次操作发现,如果不是系统配置了两个gcc,其中一个能运行,那么binutils-3.2的安装很可能无法成功进行。所以这里强烈推荐使用develtool方法安装gcc,查询目录知道这是打包安装,不依赖系统/usr/bin中的内容,会避免很多坑。

参考链接:

  1. https://blog.youkuaiyun.com/daxiang10m/article/details/93190949
  2. https://stackoverflow.com/questions/46058050/unable-to-compile-unrecognized-relocation
  3. https://www.jianshu.com/p/bf27658875dd
  4. https://blog.youkuaiyun.com/syxzsyxz1/article/details/115300804
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值