升級glibc到glibc-2.14 解決version `GLIBC_2.14' not found 問題

1.檢查系統是否支持glibc_2.14

centos7.3之前的版本,最高版本是glibc-2.12,centos7.3之後yum 默認安裝的是glibc-2.17,是支持gGLIBC_2.14的

執行如下命令檢查系統是否支持GLIBC_2.14

strings /lib64/libc.so.6 |grep GLIBC_2.14

2.編譯安裝glibc

wget http://mirrors.ustc.edu.cn/gnu/libc/glibc-2.14.1.tar.gz
tar xf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
../configure –prefix=/opt/glibc-2.14
make && make install #編譯時間不短,最後會報一個文件沒找到的錯誤,不要擔心

3.檢查是否編譯成功

ls /opt/glibc-2.14/lib/libc-2.14.so

4.替換舊的glibc-2.12.so

rm -rf /lib64/libc.so.6

LD_PRELOAD=/opt/glibc-2.14/lib/libc-2.14.so ln -s /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6

5.檢查是否替換成功

strings /lib64/libc.so.6 |grep GLIBC_2.14

6.替換glibc之後衍生的其他問題
(1)系統時間被改變

系統時間的具體地址由libc.so.6這個庫決定,升級前,centos的默認時區文件爲/etc/localtime。而我新編譯的庫時,設置了–prefix=/usr/local/glibc-2.14,導致默認路徑爲變成了/usr/local/glibc-2.14/etc/localtime,執行如下命令修改默認時區的路徑

ln -sf /etc/localtime /usr/local/glibc-2.14/etc/localtime

(2)登錄報如下警告

-bash: warning: setlocale: LC_CTYPE: cannot change locale (EN_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_COLLATE: cannot change locale (EN_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_MESSAGES: cannot change locale (EN_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_NUMERIC: cannot change locale (EN_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_TIME: cannot change locale (EN_US.UTF-8): No such file or directory

解決辦法

1.cat > /etc/environment << EOF
LANG=en_US.utf-8
LC_ALL=
EOF
2. source /etc/environment
3. localedef -v -c -i en_US -f UTF-8 en_US.UTF-8

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章