centos 升级glibcc++符号版本

升级glibcc++不会影响 glibc版本

glibc(GNU C Library)

  • 是 ‌C 语言标准库(libc)的 GNU 实现‌,提供系统调用封装(如 open()malloc())、C 标准函数(如 printf())及国际化、线程支持等基础功能。
  • 属于 ‌操作系统核心组件‌,Linux 系统中大多数命令行工具(如 lsbash)均依赖 glibc

libstdc++(GNU C++ Standard Library)

  • 是 ‌C++ 标准库的 GNU 实现‌,包含 STL(标准模板库)、流操作(如 iostream)、异常处理等 C++ 特有功能
  • 作为 ‌GCC 的组成部分‌,其版本通常与 GCC 编译器版本绑定
特性 glibc libstdc++
作用范围 提供 C 语言运行时支持 提供 C++ 语言运行时支持
依赖关系 独立存在,系统级基础库 依赖 glibc(部分底层功能需通过 glibc 实现)24
版本管理 版本独立更新(如 glibc 2.35) 版本与 GCC 绑定(如 libstdc++.so.6.0.30 对应 GCC 12)57
ABI 兼容性 版本更新可能导致二进制兼容性破坏8 ABI 版本(如 GLIBCXX_3.4.30)与 GCC 版本强相关58
典型应用场景 所有 C 程序及 Linux 系统工具 C++ 编译的程序(如 Qt、LLVM)
  • 查看 glibc 版本:
     

    ldd --version

  • 查看 libstdc++ 版本:
     

    strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX # 列出支持的 ABI 符号:

三、版本更新机制差异
  1. glibc 版本更新

    • 独立于 GCC,由 GNU 项目单独维护,如从 glibc 2.31 升级到 2.35 可能新增系统调用封装或优化线程池实现48。
    • 直接影响‌:升级可能导致依赖旧版本的系统工具(如 yum)崩溃,需谨慎操作8。
  2. libstdc++ 版本更新

    • 随 GCC 版本同步更新,例如 GCC 11 提供 libstdc++.so.6.0.29,GCC 12 提供 libstdc++.so.6.0.3057。
    • 直接影响‌:高版本 GCC 编译的 C++ 程序在低版本 libstdc++ 环境中运行时,可能因 ABI 不兼容触发 GLIBCXX_X.X.X not found 错误
  • glibc‌ 是 ‌C 程序与操作系统交互的桥梁‌,影响系统全局稳定性;
  • libstdc++‌ 是 ‌C++ 程序运行的核心支持库‌,与编译器版本紧密关联;

 c++调用lua匿名函数
https://blog.csdn.net/zhfk2004/article/details/102716134
centos 升级glibc++
https://zhuanlan.zhihu.com/p/498529973
配置lua 断点
https://blog.csdn.net/qqooopp123/article/details/108795071

以centos7.4 为例,说明libstdc++.so.6.0.19 升级到libstdc++.so.6.0.24

ubuntu也可以通过这个进行libstdc++.so.6进行升级

libstdc++的代码是在gcc的代码中,需要下载gcc代码,对其进行编译安装,设置软连接

1 查看当前已经安装的glibc的版本

目前安装的是libstdc++.so.6.0.19

查看centos7上已经安装的libstdc++.so的版本
locate libstdc++.so.6
/opt/rh/devtoolset-7/root/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.19-gdb.py
/opt/rh/devtoolset-7/root/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.19-gdb.pyc
/opt/rh/devtoolset-7/root/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.19-gdb.pyo
/opt/rh/devtoolset-7/root/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py
/opt/rh/devtoolset-7/root/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc
/opt/rh/devtoolset-7/root/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.19
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo

# 查看libstdc++.so中的GLIBC的版本支持
strings /usr/lib64/libstdc++.so.6 |grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19  // 支持的GLIBCXX最高版本:3.4.19
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.14
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH


                   

2. 下载gcc的代码&解压缩

# 下载gcc7.3.0对应的glibc源代码
wget http://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
--2022-04-14 09:40:08--  http://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
Resolving ftp.gnu.org (ftp.gnu.org)... 209.51.188.20, 2001:470:142:3::b
Connecting to ftp.gnu.org (ftp.gnu.org)|209.51.188.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 112201917 (107M) [application/x-gzip]
Saving to: 'gcc-7.3.0.tar.gz'                   1% [=>                                                                                                                                                    ] 1,974,557   7.51KB/s  eta 1h 40m
...

$ls
gcc-7.3.0.tar.gz
$tar -xvf gcc-7.3.0.tar.gz

3. 编译gcc/libstdc++

3.1 准备依赖: 需要在gcc代码的根目录执行

这一步必须执行。

cd gcc-7.3.0
./contrib/download_prerequisites
2022-04-14 11:47:39 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 [2383840] -> "./gmp-6.1.0.tar.bz2" [1]
2022-04-14 11:49:20 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2 [1279284] -> "./mpfr-3.1.4.tar.bz2" [1]
2022-04-14 11:49:56 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值