我遇到這個問題的時候是在連接庫的時候出現的問題,而且不是在編譯的時候出現的,實在運行的時候才 報錯,出現這種問題就是因爲編譯庫的編譯器和編譯當前程序的編譯器版本是不一樣的,在具體一點就是因爲,當前程序的編譯器的版本是比較低的,只要升級一下就可以了。可以用如下命令查看一下當前GCC版本:
- strings /usr/lib/libstdc++.so.6 | grep GLIBCXX
在我的機器上運行結果這樣的:
- 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_FORCE_NEW
- GLIBCXX_DEBUG_MESSAGE_LENGTH
並沒有動態庫中要求的GCC版本 “GLIBCXX_3.4.14”,所以需要進行升級一下我們的GCC版本,升級過程如下:
下載新版本的GCC,地址爲點擊打開鏈接
下載下來之後,用如下命令開始解壓
- ar -x libstdc++6_4.7.2-5_i386.deb && tar xvf data.tar.gz
如果你的文件目錄爲GCC(如果不是,把GCC改爲相應的目錄即可),依次執行下面命令:
1、進入到 usr/lib/i380-linux-gun目錄下
- cd GCC/usr/lib/i380-linux-gun
2、變成root用戶(如果是root用戶可跳過)
- su root
3、拷貝文件
- cp libstdc++.so.6.0.17 /usr/lib
4、進入到/usr/lib
- cd /usr/lib
5、刪除原來的libstdc++.so.6
- rm libstdc++.so.6
6、重新建立軟連接
- ln libstdc++.so.6.0.17 libstdc++.so.6
到現在升級就完成了。我們在去執行以下下面的命令
- strings /usr/lib/libstdc++.so.6 | grep GLIBCXX
現實如下:
- 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_DEBUG_MESSAGE_LENGTH
現在已經有了3.4.14版本,在執行一邊程序,可以運行了。
轉自:《解決/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found問題》