主流Linux发行版(Ubuntu/CentOS/Debian)系统默认glibc版本

glic是GNU项目的标准C运行库。glibc 是 Linux 系统中最底层的API,几乎其它任何运行库都会依赖于glibc。

Linux各个发行版都是基于Linux内核的,也就是说理论上某个发行版编译出来的二进制文件在其他Linux发行版都可以运行,但是实际上并非如此,因为动态链接编译出来的可执行文件依赖的库其他系统可能不满足需求(相应的库不存在或者库的版本不满足需求)。

想要一次编译就能在其他Linux发行版运行,可以以静态链接的方式进行编译,但是大型软件都会依赖很多其他的第三方库,静态链接的方式可能不太现实。

动态链接的可执行文件在其他系统运行,可能会提示缺少某个动态库或者相应库版本过低,这时能想到的就升级更高版本的库。这种做法很对,但是千万不要升级glibc,千万不要升级glibc,千万不要升级glibc,重要的事需要说三遍。

没有金刚钻就不要升级glibc!因为glibc是系统最基础的C库,几乎所有的运行库都依赖它,特别是系统命令,一旦升级了glibc极有可能会导致很多系统命令都没法正常使用,这个系统基本上就报废了,这是很多Linux小白容易遇到的问题。

其他依赖的第三方库都可以升级,唯有glibc不建议升级。正确的做法是在同一版本或者更低版本glibc的系统上进行编译可执行文件。

下表是主流Linux发行版Ubuntu/CentOS/Debian系统默认的glic版本。

Ubuntu Debian CentOS Glibc
22.04 - - 2.34
20.04 11 - 2.31
- 10 8 2.28
18.04 - - 2.27
- 9 - 2.24
16.04 - - 2.23
14.04 8 - 2.19
13.04 - 7 2.17
12.04 - - 2.15
- 7 - 2.13
- - 6 2.12

通过上表可以看到 CentOS7 的 glibc 版本为2.17,如果使用 CentOS7 系统编译的可执行文件,就可以在 Ubuntu13.04 以及更新版本和 Debian8 及更新版本上运行。

查看Linux系统glibc版本有多种方法:

方法1

1
ldd --version

方法2

1
2
3
4
5
6
7
8
# 查询libc.so位置
find / -name libc.so.6

# libc.so也是可执行文件,直接运行
/xxxx/libc.so.6

# 或者查看符号
strings libc.so.6 | grep GLIBC