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

时间:2024-10-30 08:47:38

今天解决了一个困扰了很久的问题,偶然运行了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版本

  1. 下载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中的内容,会避免很多坑。

参考链接:

  1. /daxiang10m/article/details/93190949
  2. /questions/46058050/unable-to-compile-unrecognized-relocation
  3. /p/bf27658875dd
  4. /syxzsyxz1/article/details/115300804