Centos Linux中链接器ld的版本更新
最近在centos linux中编译一个工程的时候, 遇到ld链接时报错,信息如下:
/usr/bin/ld: xxx : unrecognized relocation (0x2a) in section .text
/usr/bin/ld: final link failed: xxx
这个错误的大致意思是在符号链接过程中, 链接失败, 而出现下面这样的情况,大概率就是链接器器的版本不正确导致的。 ld 是 GUN 下提供的库链接器, 通过和正常编译的机器比较了一下 ld 工具的版本后, 果然是报错的机器上ld的版本较低, 所以接下来主要就是更新 ld 这个工具。
# 查看旧版本
ld -v
# 以我的为例,当前系统中 ld 的版本为GNU ld version 2.25.1-31.base.el7
首先确定需要的版本,到 http://ftp.gnu.org/gnu/binutils 网站下寻找自己需要的版本
举个例子,我想将原来的 2.25.1 更新成 2.26.1 版本,下载源码,整个过程执行的相关命令如下:
# 切换路径,我一般就是在 root 路径下直接操作
cd /root
# 下载 2.26.1 版本对应源码压缩包
wget http:#ftp.gnu.org/gnu/binutils/binutils-2.26.1.tar.gz
# 解压缩到当前路径
tar xvf binutils-2.26.1.tar.gz
# 切换工作目录
cd ./binutils-2.26.1
# 通过 configure 生成 makefile 文件,以及设置 make install 时的安装路径
./configure --prefix=/root/binutils-2.26.1/build
# 编译
make -j
# 导出编译生成文件
make install
# 配置路径到系统环境变量中
# vi /etc/profile 追加 export PATH=... 也可以
# 这样可以确保机器重启后,导入的环境变量不会被重置
echo export PATH=/root/binutils-2.26.1/build/bin:$PATH /etc/profile.d/localld.sh
source /etc/profile.d/localld.sh
# 验证
ld -v
# 结果显示 ld 工具版本更新成功
GNU ld (GNU Binutils) 2.26.1
需要注意的是:找到自己需要更新的版本以及最后设置环境变量。
更新于:2个月前赞一波!2
相关文章
- Linux中date命令如何格式化输出需要的时间格式
- 使用Docker Wine Qemu KVM在Linux运行Windows应用
- CentOS离线安装unzip
- Debian Linux国内常用镜像源
- CentOS7安装unzip解压工具命令使用方法
- Linux使用Docker部署.NET6网站图文教程
- Linux中通过命令连接指定WiFi
- PHP7.4命令行报错:VC运行库和PHP版本不兼容
- composer 包版本的范围指定(版本约束)
- Centos 镜像文件下载
- 什么是宝塔Linux
- Linux 删除文件或目录 rm 命令
- MySQL社区版5.x最新版安装包下载(Windows版本)
- composer self-update 更新版本
- AnolisOS能够超过CentOS吗?
- 怎样在Linux系统 Ubuntu18.04 中安装微信
- .NET8是长期维护版本吗?
- C# WebSocket Client在linux连接失败
- .NET部署到Linux和Windows哪个性能更高?
- CentOS 7 Linux系统中添加新用户并给其授权
文章评论
全部评论