升級glibc的感慨,


1. 直接升級

glibc是gnu發布的libc,即c運行庫。glibc是linux系統中最底層的api,幾乎其它任何運行庫都會依賴於glibc。glibc除了封裝linux操作系統所提供的系統服務外,它本身也提供了許多其它一些必要功能服務的實現...

 總的來說,不說運行在Linux上的一些應用,或者你之前部署過的產品,就是很多linux的基本命令,比如cp, rm, ll之類,都得依賴於它

網上很多人有慘痛教訓,甚至升級失敗后系統退出后無法重新進入了。。

對於CentOS這樣的系統,為了追求穩定性(這個值得商榷)往往各種庫版本都很低,比如6.5甚至7.0自帶的還是glibc2.12, 而ubuntu 14.04帶glibc2.19

如果升級基本C運行庫到一個太新的版本,可能會影響CentOS的運行。所以大家如果遇到CentOS基本庫的問題,影響了自己程序的運行,應該可以考慮:

源代碼編譯升級系統glibc版本,下載glibc從http://ftp.gnu.org/gnu/glibc/下載

先行查看glibc版本,運行 /lib64/libc.so.6  (/lib64/libc.so.6也是一個軟鏈接文件,直接運行就可以看到指向,本文為/lib64/libc-2.12.so



[root@fyc119 opt]# ll /lib64/libc.so.6

現在得到版本為2.12

 

glibc2.16以下,需要下載glibc-ports-2.16.0.tar.gz,和對應glibc-2.16.0.tar.gz

cd /opt

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

wget  http://ftp.gnu.org/gnu/glibc/glibc-ports-2.16.0.tar.gz

tar xf glibc-2.16.0.tar.gz

tar xf glibc-ports-2.16.0.tar.gz

ls

[root@fyc119 opt]# mv glibc-ports-2.16.0 glibc-2.16.0/ports
[root@fyc119 opt]# mkdir cc
由於glibc編譯不能在源代碼內編譯,所以新建一個文件夾cc
[root@fyc119 opt]# cd cc
[root@fyc119 cc]# ../glibc-2.16.0/configure  --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
#(直接把glibc編譯后安裝的代碼寫入/lib64, 即/usr/lib64,如果缺乏編譯gcc ,運行 yum groupinstall "Development tools")

[root@fyc119 cc]# make

[root@fyc119 cc]# make install

但是對於一些項目,不能升級glibc 又怎么辦呢?

還是參照上面,但是要修改一下

[root@fyc119 cc]# ../glibc-2.16.0/configure  --prefix=/opt/cc

[root@fyc119 cc]# make

[root@fyc119 cc]# make install

然后glibc庫文件在 /opt/cc/lib

[root@fyc119 cc]#export LD_LIBRARY_PATH=/opt/cc/lib:$LD_LIBRARY_PATH

但是centos6.8下運行nodejs,出現了glibc2.16出問題。而2.14正常。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM