关于如何升级gcc版本及相关的标准库问题
關于如何升級gcc版本及相關的標準庫問題
文章目錄
- 關于如何升級gcc版本及相關的標準庫問題
- 第一大步:先升級gcc
- 第二大步:更新標準庫(libstdc++.so.6)
第一大步:先升級gcc
(這里只是舉個例子,你們操作時把例子中gcc版本換成你們自己下載的gcc版本)
gcc版本庫
注意,如果自己下載的gcc壓縮包不一定是以.tar.bz2結尾,自己找對應的解壓方式
tar -jxvf gcc-6.1.0.tar.bz2運行這個腳本要在聯網狀態下完成,因為要下載配置,安裝依賴庫,這也需要時間,網絡不好的時候會是一個較慢長的等待時間
4.建立一個目錄供編譯出的文件存放
mkdir gcc-build-6.1.0 cd gcc-build-6.1.05.生成Makefile文件
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib6.編譯
make -j4-j4選項是make對多核處理器的優化,如果不成功請使用make
(注意:此步驟非常耗時,最好在網絡良好的情況下升級,我虛擬機耗時近3小時; 實體機近80分鐘,CPU基本是滿的,內存也使用不少)
7.安裝
make install(安裝需要root權限)
查看安裝(這一步可以省略,不同的用戶,位置可能不同)
ls /usr/local/bin | grep gcc8.重啟然后查看gcc版本
gcc -v9.測試
在編譯時最好加上-std=C++11選項
通過上面的步驟就可以完成對g++和gcc的升級,過程比較耗時,自己合理安排
第二大步:更新標準庫(libstdc++.so.6)
[root@localhost ~]# ./a.out ./a.out: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./a.out)如果出現這個錯誤,原因是你升級了gcc的版本之后卻沒有用生成的動態庫替換老版本的動態庫, 這樣在程序編譯運行的時候偶爾就會遇到上面所述的問題。
注意:網上的有一些教程在解決這個問題的時候會有這種方法,就是在網上找一個 libstdc++.so.6.0.22,然后使用這個來生成軟連接,這樣是不行的,一定要用自己編譯的動態庫(??),否則當你重啟電腦的時候,你的CentOS桌面系統就會出問題,圖形化界面都無法操作,就是因為你使用了一個來路不明的動態庫導致的,解決辦法就是使用自己編譯的動態庫或者系統自帶的動態庫來生成軟連接,這樣重啟之后系統就會恢復了。
解決方法:
自己按照我的例子來改就行
查看自己標準庫中的GLIBCXX版本,首先要比報錯的GLIBCXX版本高才行,
我的運行結果:(注意要找自己編譯升級gcc對應的庫)
記住,這是我的經過升級后的gcc標準庫的路徑,后面會用到
4.現在自己看報錯信息,看那個目錄下報的錯,我這里是
即在這個目錄下包的錯
5.進入到報錯的目錄里面
cd /home/wolf/.VimForCpp/vim/bundle/YCM.so/el7.x86_64/6.拷貝上面提到的經過自己升級gcc后編譯的標準庫到當前目錄
cp /home/wolf/gcc-9.1.0/gcc-build-9.1.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.26 ./或者(怎么拷貝就看自己的心情)
7.刪除原來軟連接:
8.將默認庫的軟連接指向最新動態庫:
ln -s libstdc++.so.6.0.26 libstdc++.so.69.最后最后,自己去測試自己的程序,
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的关于如何升级gcc版本及相关的标准库问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++中的继承(二)
- 下一篇: 贪吃蛇游戏(二)