Centos6.5升級glibc解決“libc.so.6: version GLIBC_2.14 not found”報錯問題
一、問題描述
最近在Centos6.5伺服器上配置Android打包伺服器,打包執行到aapt時遇到如下報錯:
aapt: /lib64/libc.so.6: version `GLIBC_2.14’ not found (required by aapt)
從上面報錯可以看出,程式執行時候,沒有找到“GLIBC_2.14”這個版本庫,而預設的Centos6.9 glibc版本最高為2.12, 所以需要更新系統glibc庫。
glibc是gnu釋出的libc庫,即c執行庫,glibc是linux系統中最底層的api,幾乎其它任何執行庫都會依賴於glibc。glibc除了封裝linux作業系統所提供的系統服務外,它本身也提供了許多其它一些必要功能服務的實現。
很多linux的基本命令,比如cp, rm, ll,ln等,都得依賴於它,如果操作錯誤或者升級失敗會導致系統命令不能使用,嚴重的造成系統退出後無法重新進入,所以操作時候需要慎重。
二、檢視系統版本和glibc庫版本
我們可以使用命令檢視Linux系統版本和glibc庫版本
# cat /etc/redhat-release CentOS release 6.5 (Final) # 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_2.11 GLIBC_2.12 GLIBC_PRIVATE
由上面的資訊可以看出系統是CentOS 6.5,最高支援glibc的版本為2.12,而Android打包使用的aapt需要2.14版本,所以需要升級。
三、下載GCC2.14編譯並升級
wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.14.tar.gz tar -xvf glibc-2.14.tar.gz tar -xvf glibc-ports-2.14.tar.gz mv glibc-ports-2.14 glibc-2.14/ports mkdir glibc-2.14/build cd glibc-2.14/build ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin make make install
glibc-2.14.tar.gz是gcc 2.14原始碼,glibc-ports-2.14.tar.gz包括gcc 2.14所有補丁原始碼。
如果執行以上命令完成不報錯的話,檢視庫檔案,發現/lib64/libc.so.6軟連結指向了2.14版本
# ll /lib64/libc.so.6
/lib64/libc.so.6 -> /lib64/libc-2.14.so
四、確認glibc版本升級成功
# 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_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_PRIVATE
可以看到glibc支援的版本已經到2.14。至此,我們再次進行Andnroid打包執行程式aapt就不會再報"libc.so.6: version GLIBC_2.14 not found"的錯誤了。
結束!