linux中libc如何升级,linux系统更新libc ,libstdc++标准库

开发环境下正常运行的c++程序放到新的环境重新make后报:

/lib64/libc.so.6: version `GLIBC_2.18' not found (required by /lib64/libstdc++.so.6)

/lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /lib64/libstdc++.so.6)

查看新环境的GLIBC版本:

srings /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

strings /lib64/libstdc++.so.6 | grep CXXABI

[root@bigdata-server3 lib64]# strings libstdc++.so.6 | grep CXXABI

CXXABI_1.3

CXXABI_1.3.1

CXXABI_1.3.2

CXXABI_1.3.3

CXXABI_1.3.4

CXXABI_1.3.5

CXXABI_1.3.6

CXXABI_1.3.7

发现确实版本不够

需要分别升级c和c++库

查看本地库的实际地址:

ll /usr/lib64/libstdc++.so.6

lrwxrwxrwx 1 root root 19 Nov 16 09:27 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.19

ll /usr/lib64/libc.so.6

lrwxrwxrwx 1 root root 12 Nov 16 09:16 /usr/lib64/libc.so.6 -> libc-2.17.so

==========================================================

升级libc

# wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz

(17版本以后不需要port依赖库)

下载完成后,解压,并进入解压后的目录

# tar -xvf glibc-2.18.tar.gz

# cd glibc-2.18

# mkdir build

# cd build/

../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin(时间比较长)

make

make之后 得到新的库,以后指向新的库的软连接libc.so.6

# strings libc.so.6 |grep GLIBC | head -30

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_PRIVATE

]# ll | grep libc

-rw-r--r-- 1 root root 22246960 Nov 16 09:58 libc.a

-rw-r--r-- 1 root root 192 Nov 16 09:52 libc-abis.h

-rw-r--r-- 1 root root 0 Nov 16 09:52 libc-abis.stamp

-rw-r--r-- 1 root root 93 Nov 16 09:52 libcidn.map

-rw-r--r-- 1 root root 33865 Nov 16 09:52 libc.map

-rw-r--r-- 1 root root 72910 Nov 16 09:58 libc_nonshared.a

-rw-r--r-- 1 root root 25446348 Nov 16 09:58 libc_pic.a

-rw-r--r-- 1 root root 21951016 Nov 16 09:58 libc_pic.os

-rw-r--r-- 1 root root 109 Nov 16 09:52 libcrypt.map

-rwxr-xr-x 1 root root 10230960 Nov 16 09:58 libc.so

lrwxrwxrwx 1 root root 7 Nov 16 09:58 libc.so.6 -> libc.so

此时切记不要直接复制此文件夹内的文件到系统/usr/lib64去替换原始库文件(如果已删除,删除系统libc.so.6,会导致系统命令不可用,请使用LD_PRELOAD相关命令恢复)

继续make install

正好完成后 ,新编译的库会生成到系统目录下

/usr/lib64/ | grep libc

-rwxr-xr-x. 1 root root 2173512 Apr 10 2018 libc-2.17.so

-rwxr-xr-x 1 root root 10230960 Nov 16 10:08 libc-2.18.so

lrwxrwxrwx 1 root root 12 Nov 16 10:08 libc.so.6 -> libc-2.18.so

再次查看系统c库版本

[root@bigdata-server3 lib64]# strings 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_PRIVATE

c库升级完成

====================================================

升级c++库

查看本地库的实际地址:

#ll /usr/lib64/libstdc++.so.6

lrwxrwxrwx 1 root root 19 Nov 16 09:27 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.19

拷贝高版本标准库libstdc++.so.6.0.21到该目录(可网上下载)

重新设置软连接

#ln -snf   /usr/lib64/libstdc++.so.6.0.21 /usr/lib64/libstdc++.so.6

查看新版本情况

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值