今天解决了一个困扰了很久的问题,偶然运行了flair中compile 文件,直接在lfluka下,报错:
/usr/bin/ld: (): 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
- 1
确定版本为
GNU ld version 2.32-16.el7
查询share目录下gcc使用的/usr/bin中ld版本为:
GNU ld version 2.25..el7_4.1
原因在此,决定安装新的Binutils版本
- 下载rpm包,失败,提示:
参考链接3,使用tar安装包安装到/usr
$ ./configure --prefix=/usr
- 1
继续报错
考虑还是因为share目录中gcc运行有问题,换成opt目录下gcc
$ source /opt/rh/devtoolset-9/enable
- 1
按照链接3方法安装成功
tar -zxf binutils-2.
cd binutils-2.32
./configure --prefix=/usr
make
make install在这里插入代码片
- 1
- 2
- 3
- 4
- 5
$ ld -v
GNU ld version 2.32-16.el7
- 1
- 2
然后新开窗口,注意我是命令行source …enable,再profile中这句是注释掉的,打开flair,编译成功
本次操作发现,如果不是系统配置了两个gcc,其中一个能运行,那么binutils-3.2的安装很可能无法成功进行。所以这里强烈推荐使用develtool方法安装gcc,查询目录知道这是打包安装,不依赖系统/usr/bin中的内容,会避免很多坑。
参考链接:
- /daxiang10m/article/details/93190949
- /questions/46058050/unable-to-compile-unrecognized-relocation
- /p/bf27658875dd
- /syxzsyxz1/article/details/115300804