首页 程序笔记 Centos Linux中链接器ld的版本更新

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

站心网

最近在centos linux中编译一个工程的时候, 遇到ld链接时报错,信息如下: /usr/bin/ld: xxx : unrecognized..

为您推荐

ASP.Net Core WebApi几种版本控制对比

一、版本控制的好处:(1)有助于及时推出功能, 而不会破坏现有系统。(2)它还可以帮助为选定的客户提供额外的功能。API 版本控制可以采用不同的方式进行控制,方法如下:(1)在URL 中追加版本或作为查询字符串参..

如何选择更适合你的 Linux 发行版?

很多人经常会问我这样一个问题:“嘿,你是用Linux的,对吧?我应该使用Linux的哪个版本?我有这个朋友推荐我_____,你觉得怎么样?”我通常会以这样的问题回复:这取决于你想做什么?今天我决定写一篇关于如何选择L..

VS创建.NET Core项目使用Docker方式部署到Linux服务器

在 Visual Studio(VS) 中,使用 Docker 方式部署 .NET Core 项目 到 Linux 服务器,可以简化环境管理并提高部署效率。以下是完整教程:1. 在 VS 创建 .NET Core 项目并启用 Docker新建 ASP.NET Core 项目打开 Visu..

.NET9 Blazor有哪些更新?

.NET 9 在 Blazor 中引入了多项更新,增强了开发体验和应用性能。以下是主要更新内容:1. 新的 Blazor 混合应用模板.NET 9 引入了一个支持 .NET MAUI 和 Blazor Web 客户端的混合应用模板。开发者可以利用该模板在共..

.NET9在ASP.NET MVC有什么更新?

在.NET 9 中,ASP.NET Core MVC 和其他 ASP.NET 功能进行了多项增强,以改善开发者的体验和应用性能:静态文件处理和缓存优化:ASP.NET Core MVC 现在支持静态文件的“指纹化”处理,发布时会生成包含唯一..

.Net各版本多线程使用原理和实践

多线程基本概念进程:程序在服务器上运行时,占据的计算资源合集,称之为进程。进程之间不会互相干扰,进程间的通信比较困难(分布式)。线程:程序执行的最小单位。线程也包含自己的计算资源,线程是属于进程的,一..

CentOS7部署发布.NET Core网站Ngnix安装配置图文教程

Linux服务器部署.NET Core网站运行速度更快,最近打算把原来windows server上的网站迁到linux的云服务器上。 顺便记录一下CentOS7安装.NET运行环境,安装和配置Ngnix的过程。首先安装.NET运行时sudorpm-Uvhhttps://p..

Kubernetes(k8s) Linux安装和配置

什么是Kubernetes(k8s)?Kubernetes(通常称为"k8s")是一种用于自动部署、扩展和管理容器化应用程序的开源平台。它提供了一个容器编排和管理系统,可以自动化应用程序的部署、管理和缩放,并确保它们的高可用性。在..

选择.NET6长期支持版本还是最新的.NET版本?

这取决于您的具体需求。如果您需要一个稳定可靠的平台来开发生产应用程序,那么您应该选择 .NET 6 长期支持版本。.NET 6 长期支持版本将获得三年的安全更新和两年的功能更新,因此您可以放心地将其用于生产应用程序..

.NET Core不重新编译立即更新页面

在 .NET Core 中,你可以使用一种称为 "Razor Pages" 或 "Razor Views" 的技术来实现页面的热重载,即不需要重新编译应用程序就能立即更新页面。这通常用于开发环境中,以提高开发人员的生产力。以下是一些方法来实..

C#微信公众平台access_token的获取存储与更新

一、什么是access_token? access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效。由于获取access_to..

TortoiseSVN搭建本地版本控制

一个人做一个项目,没有服务器进行代码管理,可以使用TortoiseSVN在自己的电脑中进行版本管理。首先需要建立一个版本库例如现在E盘创建一个空的文件夹E:\LocalProjects然后右键文件夹选择Create repository here然后..

Linux下RabbitMQ安装和.NET Core使用RabbitMQ.Client操作

RabbitMQ简介AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反..

Linux sed命令关键字匹配文件中整行的任意字符然后替换整行

Linux sed命令关键字匹配文件中整行的任意字符然后替换整行语法:sed -i s/.*要匹配的字串符.*/待替换的字串符/ test.txt例如,文件中内容如下:aabbccddbbccdd要将包含bb的行替换为www,使用如下命令:sed -i s/.*b..

Linux中date命令如何格式化输出需要的时间格式

linux中date命令,可以输出各种格式的时间,有时候在shell脚本中需要获取一定格式的时间字符串,直接使用date命令格式化时间输出就可以完成。date命令的help如下:ferris@ferris-pc:~$ date --help用法:date [选项]..

使用Docker Wine Qemu KVM在Linux运行Windows应用

Docker、Wine、Qemu和KVM都是在Linux上运行Windows程序的工具,但它们的实现方式和使用场景有所不同。Docker是一个容器化技术,它可以在Linux系统中创建和运行容器,这些容器可以包含Windows程序和其所需的依赖项。D..

Debian Linux国内常用镜像源

随着Debian Buster 10.3的发布,Debian Buster 日趋稳定。如果在生产上使用了 Debian 9 的系统,现在是可以安全的,灰度升级到 Debian Buster 做前期验证了。这里我们整理一下国内较知名的镜像站点,供大家在生产环..

CentOS7安装unzip解压工具命令使用方法

CentOS7可以通过yum命令安装支持zip的工具unzip,下面是安装和使用的方法。安装unzip工具yuminstall-yunzipzip使用unzip命令解压zip文件#解压到当前目录下unziptest.zip#使用-d参数解压到指定目录下unzip-d/filestes..

Linux使用Docker部署.NET6网站图文教程

本文主要实践在Linux使用Docker部署.NET Core网站。服务器使用的是CentOS7.9版本。我们使用Visual Studio2022创建.NET Core网站并生成Dockerfile文件,然后上传到Linux服务器并使用Docker部署网站。创建网站并生成Do..

Linux为网站配置SSL证书实现https访问

在Linux系统上配置证书,实现https访问,一般需要以下几个步骤:获取证书要启用https,需要在服务器上安装SSL/TLS证书。您可以从商业证书颁发机构(CA)购买证书,或使用免费的Let's Encrypt证书。可以使用certb..

发表回复

返回顶部

微信分享

微信分享二维码

扫描二维码分享到微信或朋友圈

链接已复制