/usr/lib64/libstdc++.so.6: version `glibcxx_3.4.21' not found。
centos linux release 7.6.1810 (core)
linux centos7 3.10.0-957.5.1.el7.x86_64 #1 smp fri feb 1 14:54:57 utc 2019 x86_64 x86_64 x86_64 gnu/linux
$ strings /usr/lib64/libstdc++.so.6 | grep glibc
glibcxx_3.4
glibcxx_3.4.1
glibcxx_3.4.2
glibcxx_3.4.3
glibcxx_3.4.4
glibcxx_3.4.5
glibcxx_3.4.6
glibcxx_3.4.7
glibcxx_3.4.8
glibcxx_3.4.9
glibcxx_3.4.10
glibcxx_3.4.11
glibcxx_3.4.12
glibcxx_3.4.13
glibcxx_3.4.14
glibcxx_3.4.15
glibcxx_3.4.16
glibcxx_3.4.17
glibcxx_3.4.18
glibcxx_3.4.19
glibc_2.3
glibc_2.2.5
glibc_2.14
glibc_2.17
glibc_2.3.2
# 查詢庫檔案
$ find / -name libstdc++.so.6.0.21
# 如果libstdc++.so.6.0.21庫檔案已存在,則按照下面的步驟建立軟鏈結即可
# 如果libstdc++.so.6.0.21庫檔案不存在,則需要按照下面的步驟編譯新版本的gcc,然後再建立軟鏈結
$ wget
# 解壓檔案
$ tar -xvf gcc-5.2.0.tar.bz2
# 進入解壓目錄
$ cd gcc-5.2.0
$ ./contrib/download_prerequisites
# 建立輸出目錄,用於存放編譯時所有產生的中間檔案
$ mkdir gcc-temp
# 進入輸出目錄
$ cd gcc-temp
# 執行configure配置
$ ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
# 編譯gcc,指定編譯使用的執行緒數為8,編譯耗時較長,可能需要幾個小時
$ make -j8
# 這裡為了避免影響系統的穩定性,暫時不執行"make install"和替換系統預設版本的gcc
# 進入輸出目錄
$ cd gcc-temp
# 查詢編譯生成libstdc++.so庫檔案,下面查詢到的libstdc++.so、libstdc++.so.6都只是軟鏈結檔案,libstdc++.so.6.0.21才是真正編譯生成的庫檔案
$ find . -name "libstdc++.so*"
./prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
./prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
./prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21
./stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
./stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
./stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21
./x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
./x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
./x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21
# 拷貝libstdc++.so.6.0.21庫檔案到lib64目錄
$ cp ./x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64
# 進入lib64目錄
$ cd /usr/lib64
# 刪除舊的鏈結檔案
$ rm -f libstdc++.so.6
# 建立新的鏈結檔案
$ ln -s libstdc++.so.6.0.21 libstdc++.so.6
# 檢視最終的libstdc++.so庫檔案列表
$ ls -al /usr/lib64/libstdc++.so.6*
lrwxrwxrwx. 1 root root 19 3月 12 10:08 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.21
-rwxr-xr-x. 1 root root 991616 10月 30 14:39 /usr/lib64/libstdc++.so.6.0.19
-rwxr-xr-x. 1 root root 11485880 3月 12 10:01 /usr/lib64/libstdc++.so.6.0.21
如果下面的輸出結果中,出現 glibcxx_3.4.21,則代表新的 libstdc++.so.6.0.21 庫檔案生效。
$ strings /usr/lib64/libstdc++.so.6 | grep glibc
glibcxx_3.4
glibcxx_3.4.1
glibcxx_3.4.2
glibcxx_3.4.3
glibcxx_3.4.4
glibcxx_3.4.5
glibcxx_3.4.6
glibcxx_3.4.7
glibcxx_3.4.8
glibcxx_3.4.9
glibcxx_3.4.10
glibcxx_3.4.11
glibcxx_3.4.12
glibcxx_3.4.13
glibcxx_3.4.14
glibcxx_3.4.15
glibcxx_3.4.16
glibcxx_3.4.17
glibcxx_3.4.18
glibcxx_3.4.19
glibcxx_3.4.20
glibcxx_3.4.21
glibc_2.3
glibc_2.2.5
glibc_2.14
glibc_2.17
glibc_2.3.2
glibcxx_debug_message_length
linux 亂碼解決
1 問題狀況表述,通過跳板機登入了遠端機器時候,部分遠端機器出現亂碼。但是直接登入到遠端機器有時候又沒有亂碼。這是因為本地機器和遠端機器編碼方式不一樣引起的。解決辦法 locale 檢視本地機器 遠端機器編碼方式,檢視是否一致 locale lang en us.utf 8 lc ctype zh ...
Linux中文解決
中文編碼問題 安裝中文語言包 locale a grep zh 檢視是否有中文語言包 local 檢視是否 lc type 為空 在 etc profile.d 下建立 lc type.sh 在 lc type.sh 新增中新增 export lc type zh cn.utf8 pillow py...
linux下解決大量的TIME WAIT
root web02 vi etc sysctl.conf 新增如下內容 net.ipv4.tcp tw reuse 1 net.ipv4.tcp tw recycle 1 net.ipv4.tcp syncookies 1 使核心引數生效 root web02 sysctl p readme ne...