升级glibcc++不会影响 glibc版本
glibc(GNU C Library)
- 是 C 语言标准库(libc)的 GNU 实现,提供系统调用封装(如
open()
、malloc()
)、C 标准函数(如printf()
)及国际化、线程支持等基础功能。 - 属于 操作系统核心组件,Linux 系统中大多数命令行工具(如
ls
、bash
)均依赖 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 符号:
三、版本更新机制差异
-
glibc 版本更新
- 独立于 GCC,由 GNU 项目单独维护,如从 glibc 2.31 升级到 2.35 可能新增系统调用封装或优化线程池实现48。
- 直接影响:升级可能导致依赖旧版本的系统工具(如
yum
)崩溃,需谨慎操作8。
-
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