Linux升級C基本運行庫CLIBC

來源:互聯網
上載者:User

標籤:

 

在你準備升級GLIBC庫之前,你要好好思考一下,

你真的要升級GLIBC嗎?

你知道你自己在做什麼嗎?

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

 

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

網上很多人有慘痛教訓,升級失敗後系統絕大部分命令無法運行,系統退出後無法重新進入。。。。。。

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

 

我遇到問題的系統是CentOS 5.9,通過查看發現系統內建的GLIBC版本是2.5,而開發的程式運行需要GLIBC版本達到2.11,因此就得手動升級GLIBC。

第一次首先是下載GLIBC_2.12編譯安裝,但是安裝報錯,於是再嘗試下載GLIBC_2.11編譯安裝,還是繼續報錯,通過尋找資料得到結果應該是系統版本太低,不支援安裝太高版本的GLIBC,於是下載GLIBC_2.10的編譯安裝,結果成功了,但是無法滿足程式要求的GLIBC版本達到2.11,有兩個解決方案:修改程式碼要求GLIBC版本達到2.10即可運行;更換更高版本的CentOS系統,推薦6.3以上的,內建的GLIBC都是2.12的了。

 

首先查看先有的情況,在CentOS5.9下


[[email protected] ~]# ll /lib64/libc.so.6
lrwxrwxrwx 1 root root 11 Aug 27 2014 /lib64/libc.so.6 -> libc-2.5.so
[[email protected] ~]# strings /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_PRIVATE

libc.so.6是一個軟串連,當前的glibc是2.5版本,開發的程式問題是GLIBC_2.7和GLIBC_2.11找不到的問題,所以需至少升級到2.11,前面說了,2.11安裝失敗,於是安裝2.10吧

 

對於低版本glibc,還有glibc-linuxthreads-2.x需要編譯,可參考很多網上文檔,但2.10沒有,所以不用了


[[email protected] ~]# wget http://ftp.gnu.org/gnu/glibc/glibc-2.10.1.tar.gz

[[email protected] ~]# wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.10.1.tar.gz

[[email protected] ~]# tar -xvf glibc-2.10.1.tar.gz

[[email protected] ~]# tar -xvf glibc-ports-2.10.1.tar.gz

[[email protected] ~]# mv glibc-ports-2.10.1 glibc-2.10.1/ports

[[email protected] ~]# mkdir glibc-build-2.10.1

[[email protected] ~]# cd glibc-build-2.10.1

[[email protected] ~]# ../glibc-2.10.1/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

[[email protected] ~]# make

[[email protected] ~]# make install


如果提示install成功,去看glibc所在的共用庫:


[[email protected] ~]# ll /lib64/libc*
可以看到2.5的舊庫檔案還在,多了2.10版本的庫檔案,而且軟連結檔案全部指向了2.10版本。


-rwxr-xr-x 1 root root 8313772 Jun 4 12:10   /lib64/libc-2.10.1.so
-rwxr-xr-x 1 root root 1720712 Jan 28 01:33  /lib64/libc-2.5.so
lrwxrwxrwx 1 root root 14 May 25 15:02        /lib64/libcap.so.1 -> libcap.so.1.10
-rwxr-xr-x 1 root root 17384 Mar 15 2007      /lib64/libcap.so.1.10
-rwxr-xr-x 1 root root 197744 Jan 28 01:33   /lib64/libcidn-2.5.so
lrwxrwxrwx 1 root root 14 Jun 2 14:31           /lib64/libcidn.so.1 -> libcidn-2.5.so
lrwxrwxrwx 1 root root 17 May 26 15:40       /lib64/libcom_err.so.2 -> libcom_err.so.2.1
-rwxr-xr-x 1 root root 10096 Sep 18 2014      /lib64/libcom_err.so.2.1
-rwxr-xr-x 1 root root 109360 Jun 4 12:10          /lib64/libcrypt-2.10.1.so
-rwxr-xr-x 1 root root 45728 Jan 28 01:33          /lib64/libcrypt-2.5.so
-rwxr-xr-x 1 root root 1369312 May 13 04:58    /lib64/libcrypto.so.0.9.8e
lrwxrwxrwx 1 root root 19 May 26 15:40          /lib64/libcrypto.so.6 -> libcrypto.so.0.9.8e
lrwxrwxrwx 1 root root 18 Jun 4 12:10             /lib64/libcrypt.so.1 -> libcrypt-2.10.1.so
lrwxrwxrwx 1 root root 14 Jun 4 12:10             /lib64/libc.so.6 -> libc-2.10.1.so

[[email protected] ~]# strings /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_PRIVATE

到這裡就成功更新了GLIBC,需要注意的是整個安裝編譯過程時間比較長,需要耐心等候。

 

Linux升級C基本運行庫CLIBC

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.