升級gcc後出現錯誤:/usr/lib/libstdc++.so.6: version `CXXABI_1.3.9' not found
阿新 • • 發佈:2019-01-27
升級gcc後,今天用g++編譯一個c++程式時出現一個錯誤,如下: ./destructor: /usr/lib/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./destructor) 經過網上查詢後,發現問題是由於升級了gcc,卻沒有將升級後的gcc的動態庫去替換老版本的gcc動態庫所致。
strings /usr/lib/libstdc++.so.6 | grep CXXABI 結果如下:b. 執行以下命令,查詢編譯發現最高版本只有1.3.3,沒有1.3.9的。說明出現這些問題,是因為升級
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
gcc
時,生成的動態庫沒有替換老版本gcc
的動態庫。 ls -l /usr/lib/libstdc++.so.6我們發現libstdc++.so.6是個軟連線,是連線到libstdc++.so.6.0.13上的,而libstdc++.so.6.0.13是老版本的動態庫。所以下面我們要做的就是將libstdc++.so.6連線到新版本的動態庫上去。
lrwxrwxrwx.1 root root 19Apr717:57/usr/lib/libstdc++.so.6-> libstdc++.so.6.0.13
gcc
時生成的最新動態庫:
find /-name
"libstdc++.so.*"
結果如下:c. 將上面的最新目錄複製到/usr/lib/目錄下:其中/usr/local/src/gcc-build-6.3.0是我們升級gcc時的輸出目錄,libstdc++.so.6.0.22就是我們的新版本的動態庫。
/usr/local/src/gcc-6.3.0/gcc-build-6.3.0/prev-i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22
/usr/local/src/gcc-6.3.0/gcc-build-6.3.0/prev-i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/usr/local/src/gcc-6.3.0/gcc-build-6.3.0/stage1-i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.
6.0.22/usr/local/src/gcc-6.3.0/gcc-build-6.3.0/stage1-i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/usr/local/src/gcc-6.3.0/gcc-build-6.3.0/i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22
/usr/local/src/gcc-6.3.0/gcc-build-6.3.0/i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/usr/local/lib/libstdc++.so.6.0.22
/usr/local/lib/libstdc++.so.6.0.22-gdb.py
/usr/local/lib/libstdc++.so.6
/usr/lib/libstdc++.so.6.0.13
/usr/lib/libstdc++.so.6
cp /usr/local/src/gcc-6.3.0/gcc-build-6.3.0/i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22/usr/lib/
d. 將libstdc++.so.6連線到libstdc++.so.6.0.22上去:e. 預設動態庫升級完成。重新執行以下命令檢查動態庫:
cd /usr/lib
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.22 libstdc++.so.6
strings /usr/lib/libstdc++.so.6| grep 'CXXABI'
結果如下:可看到確實是連線到新的動態庫上去了。完成!
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_1.3.8
CXXABI_1.3.9
CXXABI_1.3.10
CXXABI_TM_1
CXXABI_FLOAT128