如何安全,高效,优雅的提升linux的glibc版本

如何安全,高效,优雅的提升linux的glibc版本

    • 一、发现问题
    • 二、升级glibc版本
      • 1. 下载对应的软件包
      • 2. 解压软件包
      • 3. 查看新版本glibc安装要求,并查看自己版本是否符合需求
      • 4. 升级python版本
        • 4.1 下载软件包
        • 4.2 解压
        • 4.3 编译
        • 4.4 确认更新后的python版本
      • 5. 更新make版本
        • 5.1 下载软件包
        • 5.2 解压
        • 5.3 编译
        • 5.4 确认更新后的make版本
      • 6. 更新gcc版本
        • 6.1 下载软件包
        • 6.2 解压
        • 6.3 编译
        • 6.4 验证gcc版本
        • 6.5 配置全局可用
      • 7. 编译新版本glibc
      • 8. 安装
      • 9. 检查可用glibc版本


一、发现问题

之前在配置Gorse的时候遇到了下面这个问题:

gorse-in-one: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by gorse-in-one)
gorse-in-one: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by gorse-in-one)

这个问题是没有找到2.32以及2.34的glibc
可以先查看一下目前可用的glibc版本

 strings /lib64/libc.so.6 | grep GLIBC

运行结果如下

GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_PRIVATE

可以看出目前并没有那两个版本的glibc
那么,就进入正题,升级glibc版本

二、升级glibc版本

注:

  1. 升级glibc版本存在系统崩溃风险,强烈建议在升级前拍摄系统快照,以便出错时及时恢复
  2. 此操作建议需要的权限较高,建议root成员进行操作,非root成员建议全程使用sudo操作

1. 下载对应的软件包

wget https://mirrors.aliyun.com/gnu/glibc/glibc-2.34.tar.gz

2. 解压软件包

tar -zxvf glibc-2.34.tar.gz

3. 查看新版本glibc安装要求,并查看自己版本是否符合需求

cd glibc-2.34
cat INSTALL | grep -E  "later|newer"

结果如下,主要关注python make gcc 三个版本

     this option if you want to compile the GNU C Library with a newer
     later.  Note that when CET is enabled, the GNU C Library requires
     Intel Pentium Pro or newer.  With '--enable-cet', it is an error to
     to build without this option (for example, if building with a newer
The tests (and later installation) use some pre-existing files of the
   * GNU 'make' 4.0 or newer
   * GCC 6.2 or newer
     building the GNU C Library, as newer compilers usually produce
     of release, this implies GCC 7.4 and newer (excepting GCC 7.5.0,
   * GNU 'binutils' 2.25 or later
     binutils 2.26 or newer.
   * GNU 'texinfo' 4.7 or later
   * GNU 'bison' 2.7 or later
   * GNU 'sed' 3.02 or newer
   * Python 3.4 or later
   * GDB 7.8 or later with support for Python 2.7/3.4 or later
   * GNU 'gettext' 0.10.36 or later
to have the header files from a 3.2 or newer kernel around for
reference.  (For the ia64 architecture, you need version 3.2.18 or newer
python -V
gcc -v
make -v
Python 2.7.5
gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
GNU Make 3.82

4. 升级python版本

如果不执行这步,直接进行升级会出现如下报错

configure: error: 
*** These critical programs are missing or too old: make compiler python
*** Check the INSTALL file for required versions.
4.1 下载软件包
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz
4.2 解压
tar -zxf Python-3.8.0.tgz 
4.3 编译

依次执行下列命令

mkdir /usr/local/python3
cd Python-3.8.0
mkdir build
../configure --prefix=/usr/local/python3
make -j 4
make install
4.4 确认更新后的python版本
 python3 -V

5. 更新make版本

如果不执行这步,直接进行升级会出现如下报错

configure: error: 
*** These critical programs are missing or too old: make compiler
*** Check the INSTALL file for required versions.
5.1 下载软件包
wget http://ftp.gnu.org/pub/gnu/make/make-4.3.tar.gz
5.2 解压
tar -zxvf make-4.3.tar.gz
5.3 编译
cd make-4.3
./configure --prefix=/usr
type make
make check
# 可能会报一些错误,不过不影响后面的install
make install

这几步稍有点慢,耐心等待

5.4 确认更新后的make版本
make -v
GNU Make 4.3
为 x86_64-pc-linux-gnu 编译
Copyright (C) 1988-2020 Free Software Foundation, Inc.
许可证:GPLv3+:GNU 通用公共许可证第 3 版或更新版本<http://gnu.org/licenses/gpl.html>。
本软件是自由软件:您可以自由修改和重新发布它。
在法律允许的范围内没有其他保证。

6. 更新gcc版本

如果不执行这步,直接进行升级会出现如下报错

configure: error: 
*** These critical programs are missing or too old: compiler
*** Check the INSTALL file for required versions.
6.1 下载软件包
wget http://ftp.gnu.org/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.gz
6.2 解压
tar -zxvf gcc-11.2.0.tar.gz
6.3 编译
mkdir build
cd build/
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
make -j 4
# 这一步时间非常长
yum -y remove gcc g++
# 删除旧版本
make install
# 安装

非常慢,耐心等待

6.4 验证gcc版本
gcc -v
Using built-in specs.
COLLECT_GCC=/usr/local/bin/gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/11.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 11.2.0 (GCC)
6.5 配置全局可用
ln -s /usr/local/bin/gcc /usr/bin/gcc
ln -s /usr/local/bin/g++ /usr/bin/g++

# 更新动态库
rm -f /usr/lib64/libstdc++.so.6
ln -s /usr/local/lib64/libstdc++.so.6.0.29 /usr/lib64/libstdc++.so.6

7. 编译新版本glibc

cd glibc-2.34
mkdir bulid
cd bulid
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

8. 安装

这步请务必确保当前用户拥有权限,非root用户请使用sudo运行

make && make install

接下来大概率会报这样的错误

gcc: relocation error: /lib64/libc.so.6: symbol __tunable_get_val, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
 make[1]: *** [Makerules:1041: /home/luolong/glibc-2.35/build/format.lds] Error 127
 make[1]: Leaving directory '/home/luolong/glibc-2.35'
 make: *** [Makefile:12: install] Error 2

这时候应该SSH的链接也断开了,很多基础命令也无法使用了 如使用ls命令

ls: relocation error: /lib64/libpthread.so.0: symbol __libc_dl_error_tsd, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference

这是正常现象,请键入如下命令

LD_PRELOAD=/lib64/libc-2.34.so sln /root/glibc-2.34/build/libc.so.6                 /lib64/libc.so.6
LD_PRELOAD=/lib64/libc-2.34.so sln /root/glibc-2.34/build/dlfcn/libdl.so.2          /lib64/libdl.so.2
LD_PRELOAD=/lib64/libc-2.34.so sln /root/glibc-2.34/build/nptl/libpthread.so.0      /lib64/libpthread.so.0
LD_PRELOAD=/lib64/libc-2.34.so sln /root/glibc-2.34/build/elf/ld-linux-x86-64.so.2  /usr/lib64/ld-linux-x86-64.so.2

PS:如果你并不是root用户,请将[/root/glibc-2.34/build] 改成自己的位置

此时,再次执行

make install

9. 检查可用glibc版本

strings /lib64/libc.so.6 | grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_2.18
GLIBC_2.22
GLIBC_2.23
GLIBC_2.24
GLIBC_2.25
GLIBC_2.26
GLIBC_2.27
GLIBC_2.28
GLIBC_2.29
GLIBC_2.30
GLIBC_2.31
GLIBC_2.32
GLIBC_2.33
GLIBC_2.34
GLIBC_PRIVATE

成功!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/875393.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

element ui form 表单出现英文提示的解决方案

场景再现&#xff1a; 在使用 form 表单的时候&#xff0c;一般都需要对表单元素进行验证&#xff0c;错误就出现在了这里&#xff0c;除了配置的错误信息&#xff0c;还会出现一个 英文校验提示&#xff0c;如下图&#xff1a; 解决方案 出现的原因是在el-form-item中使用…

把设计模式用起来(3)用不好的原因之时机不对

上一篇&#xff1a;《把设计模式用起来&#xff08;3&#xff09;——用不好的原因 之 实践不足》https://blog.csdn.net/nanyu/article/details/141939342 本篇继续讲设计模式用不好的常见原因&#xff0c;这是第二个&#xff1a;使用设计模式的时机不对。 二、时机不对 这里…

望繁信科技与华恒生物正式签约,共同开启流程数字化转型新篇章

近日&#xff0c;上海望繁信科技有限公司&#xff08;简称“望繁信科技”&#xff09;与安徽华恒生物科技股份有限公司&#xff08;简称“华恒生物”&#xff09;成功举行了战略合作签约仪式。作为全球领先的合成生物制造企业&#xff0c;华恒生物将引入望繁信科技的流程智能管…

3分钟带你了解什么是数据目录

什么是数据目录&#xff1f; 数据目录&#xff0c;顾名思义就是“数据的目录”。这里的“数据”指的是元数据。数据目录通过管理这些元数据&#xff0c;形成一个可用的数据清单&#xff0c;使数据开发者、数据分析师等人员能够通过查阅和搜索等操作&#xff0c;快速找到所需的数…

4052A/4052B/4052C/4052D/4052E/4052F/4052G /4052H信号/频谱分析仪

4052A/4052B/4052C/4052D/4052E/4052F/4052G /4052H信号/频谱分析仪 苏州新利通 Ceyear 4052具备出色的测试动态范围、相位噪声、幅度精度和测试速度&#xff0c;具备频谱分析、I/Q分析、实时频谱分析、瞬态分析、矢量信号分析、脉冲分析、音频分析等丰富的测试功能。 Ceyear…

长沙自闭症寄宿学校推荐,为孩子开启光明未来

在长沙这座历史悠久而又充满活力的城市中&#xff0c;自闭症儿童的成长与教育问题牵动着无数家庭的心。家长们渴望为孩子找到一所能够提供专业康复、温馨关怀与全面教育的学校&#xff0c;为他们的未来铺设一条光明之路。虽然本文起始于长沙的期盼&#xff0c;但我们的目光已跨…

SpringSecurity原理解析(二):认证流程

1、SpringSecurity认证流程包含哪几个子流程&#xff1f; 1&#xff09;账号验证 2&#xff09;密码验证 3&#xff09;记住我—>Cookie记录 4&#xff09;登录成功—>页面跳转 2、UsernamePasswordAuthenticationFilter 在SpringSecurity中处理认证逻辑是在UsernamePas…

Windows10 如何配置python IDE

Windows10 如何配置python IDE 前言Python直接安装&#xff08;快速上手&#xff09;Step1.找到网址Step2.选择版本&#xff08;非常重要&#xff09;Step3. 安装过程Step4. python测试 Anaconda安装&#xff08;推荐&#xff0c;集成了Spyder和Pycharm的安装&#xff09;Step1…

使用功率分析仪测量和分析电抗器(电感器)的方法

高频电抗器用于电动汽车 (EV) 和混合动力汽车 (HEV) 的各种位置。例如&#xff0c;电池和逆变器之间的升压 DC/DC 转换器以及电池充电电路中的 AC/DC 转换器。为了提高整个系统的效率&#xff0c;必须提高每个组成电路的效率&#xff0c;而电抗器是造成这些电路大量损耗的元件之…

Unity 之 【Android Unity FBO渲染】之 [Unity 渲染 Android 端播放的视频] 的一种方法简单整理

Unity 之 【Android Unity FBO渲染】之 [Unity 渲染 Android 端播放的视频] 的一种方法简单整理 目录 Unity 之 【Android Unity FBO渲染】之 [Unity 渲染 Android 端播放的视频] 的一种方法简单整理 一、简单介绍 二、FBO 简单介绍 三、案例实现原理 四、注意事项 五、简…

03 Flask-添加配置信息

回顾之前学习的内容 02 Flask-快速上手 Flask 中最简单的web应用组成 1. 导入核心库 Flask from flask import Flask2. 实例化 web应用 注意&#xff1a;不要漏了 app Flask(__name__) 中的 __name__ 表示&#xff1a;是从当前的py文件实例化 app Flask(__name__)3. 创…

力扣每日一题:1372.二叉树中的最长交错路径

题目 给你一棵以 root 为根的二叉树&#xff0c;二叉树中的交错路径定义如下&#xff1a; 选择二叉树中 任意 节点和一个方向&#xff08;左或者右&#xff09;。如果前进方向为右&#xff0c;那么移动到当前节点的的右子节点&#xff0c;否则移动到它的左子节点。改变前进方…

力扣213-打家劫舍 II(Java详细题解)

题目链接&#xff1a;213. 打家劫舍 II - 力扣&#xff08;LeetCode&#xff09; 前情提要&#xff1a; 本体是打家劫舍的一个变形题&#xff0c;希望大家能先做198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09;&#xff0c;并看一下我上题的讲解力扣198-打家劫舍&…

制证书、制电子印章、签章 -- 演示程序说明

ofd签章系统涉及证书的制作、电子印章制作、签章、验章等环节。关于ofd签章原理&#xff0c;本人写过多篇文章进行了阐述; 见文章《ofd板式文件 电子签章实现方法》、《一款简单易用的印章设计工具》、《签章那些事 -- 让你全面了解签章的流程》。 为了进一步加深对签章过程的理…

RK3229 ADNROID9 hdmi与耳机口同出声音

声卡0怎么配置才能跟HDMI同时输出一样的声音&#xff0c;下面是具体描述&#xff1a; 1、硬件连接 声卡0的连接是芯片的ADC音频输出脚直接接到DA芯片输出 2、cat /proc/asound/cards 0 [rockchiprk3229 ]: rockchip_rk3229 - rockchip,rk3229 rockchip,rk3229 1 [rockchiphdmi …

MFC工控项目实例之十一板卡测试信号输入界面

承接专栏《MFC工控项目实例之十添加系统测试对话框》 相关代码 1、在BoardTest.h文件中添加代码 class CBoardTest : public CDialog { // Construction public:CBoardTest(CWnd* pParent NULL); // standard constructorCButtonST m_btnStart[16];CWinThread* pThread…

FAT32文件系统详细分析 (格式化SD nandSD卡)

FAT32 文件系统详细分析 (格式化 SD nand/SD 卡) 目录 FAT32 文件系统详细分析 (格式化 SD nand/SD 卡)1. 前言2.格式化 SD nand/SD 卡3.FAT32 文件系统分析3.1 保留区分析3.1.1 BPB(BIOS Parameter Block) 及 BS 区分析3.1.2 FSInfo 结构扇区分析3.1.3 引导扇区剩余扇区3.1.4 …

RocketMQ 基础入门

文章内容是学习过程中的知识总结&#xff0c;如有纰漏&#xff0c;欢迎指正 文章目录 前言 RocketMQ 特点 RocketMQ 优势 1. RocketMQ 基本概念 1.1 NameServer 1.1.1 NameServer作用 1.1.2 和zk的区别 1.1.3 高可用保障 1.2 Broker 1.2.1 部署方式 1.2.1.1 单 Master 1.2.1.2 …

C语言 | Leetcode C语言题解之第396题旋转函数

题目&#xff1a; 题解&#xff1a; #define MAX(a, b) ((a) > (b) ? (a) : (b))int maxRotateFunction(int* nums, int numsSize){int f 0, numSum 0;for (int i 0; i < numsSize; i) {f i * nums[i];numSum nums[i];}int res f;for (int i numsSize - 1; i &g…

多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测

多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测 目录 多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变…