今天解决了一个困扰了很久的问题,偶然运行了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版本
- 下载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中的内容,会避免很多坑。
参考链接:
- https://blog.youkuaiyun.com/daxiang10m/article/details/93190949
- https://stackoverflow.com/questions/46058050/unable-to-compile-unrecognized-relocation
- https://www.jianshu.com/p/bf27658875dd
- https://blog.youkuaiyun.com/syxzsyxz1/article/details/115300804

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

被折叠的 条评论
为什么被折叠?



