安裝cmake的時候,./bootstrap這一步走不通,說是缺乏c++編譯器,開啟指定的log日誌後,發現根源在於libstdc++.so.6找不到的問題,在網上搜了很多方法,出現問題的原因有以下幾種:
1./usr/lib下面沒有libstc++.so.6 這個通過安裝軟體包,然後建立軟連結即可。
2./usr/lib 與/usr/local/lib 或/usr/lib64 下有不同版本的libstc++.so.6 ,導致衝突,
參見這篇日誌的分析 http://blog.csdn.net/jindingwang/article/details/7569466
解決方案在上篇日誌中寫到了。
以在/usr/lib64版本不一致為例(我遇到的情況),
在/usr/lib 下面的libstdc++.so.6指向 的版本是6.0.3 然而在/usr/lib64中也存在一個libstdc++.so.6指向 的版本是6.0.8 。因此將6.0.3的版本拷貝到/usr/lib64下面(其實我的那個lib64下面有6.0.3於是我就沒有再copy),重建立立符號連結。
但是這一步之後 ./bootstrap 沒有再報c++編譯器的問題,而是報出了以下錯誤:
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.5' not found
經查是由於libstdc++.so.6.0.*版本過低導致的,看來6.0.3連結不行,於是我就將/usr/lib64下面的6.0.8的版本拷至
/usr/lib下,重新連結,發現又回到了找不到libstdc++.so.6的情況。。。。後來我下載了6.0.13的版本將其分別複製到兩個目錄下,在各自的目錄中分別建立軟連結。依然是找不到Libstdc++.so.6。然後又測試將lib64下面的軟串連指向lib下面的6.0.13,依舊失敗。反方向建立軟串連依舊是報之前的錯誤。好悲催。。。。
後來,使用Locate 命令找到,在/usr/local/lib64下面還有個6.0.9的包,於是將這個包複製到/usr/local/lib和/usr/lib, /usr/lib64下面,在各自的目錄下分別建立軟串連。最終命令運行成功。
猜測是因為/usr/local/lib下面我之前將.so.6 和 6.0.*均刪除的緣故?經測試並不是這個原因。。。還是因為跟/usr/local/lib64下的.so.6檔案連結的是自己的6.0.9的版本會與13衝突?但第一次統一為6.0.3時,為什麼不與6.0.3的版本衝突呢?