日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于如何升级gcc版本及相关的标准库问题

發布時間:2024/4/11 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于如何升级gcc版本及相关的标准库问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于如何升級gcc版本及相關的標準庫問題

文章目錄

  • 關于如何升級gcc版本及相關的標準庫問題
    • 第一大步:先升級gcc
    • 第二大步:更新標準庫(libstdc++.so.6)

第一大步:先升級gcc

(這里只是舉個例子,你們操作時把例子中gcc版本換成你們自己下載的gcc版本)

  • 先找到自己想要的gcc版本,可以在下面鏈接中找:
    gcc版本庫
  • 獲取安裝包并解壓:
  • wget http://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-6.1.0.tar.bz2

    注意,如果自己下載的gcc壓縮包不一定是以.tar.bz2結尾,自己找對應的解壓方式

    tar -jxvf gcc-6.1.0.tar.bz2
  • 下載供編譯需求的依賴項 這個神奇的腳本文件會幫我們下載、配置、安裝依賴庫,可以節約我們大量的時間和精力。
  • cd gcc-6.1.0 ./contrib/download_prerequisites

    運行這個腳本要在聯網狀態下完成,因為要下載配置,安裝依賴庫,這也需要時間,網絡不好的時候會是一個較慢長的等待時間

    4.建立一個目錄供編譯出的文件存放

    mkdir gcc-build-6.1.0 cd gcc-build-6.1.0

    5.生成Makefile文件

    ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

    6.編譯

    make -j4

    -j4選項是make對多核處理器的優化,如果不成功請使用make
    (注意:此步驟非常耗時,最好在網絡良好的情況下升級,我虛擬機耗時近3小時; 實體機近80分鐘,CPU基本是滿的,內存也使用不少)

    7.安裝

    make install

    (安裝需要root權限)

    查看安裝(這一步可以省略,不同的用戶,位置可能不同)

    ls /usr/local/bin | grep gcc

    8.重啟然后查看gcc版本

    gcc -v

    9.測試

    在編譯時最好加上-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版本高才行,

  • strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
  • root模式下執行以下命令,查找編譯gcc時生成的最新動態庫:
  • find / -name "libstdc++.so*"

    我的運行結果:(注意要找自己編譯升級gcc對應的庫)

    記住,這是我的經過升級后的gcc標準庫的路徑,后面會用到

    /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

    4.現在自己看報錯信息,看那個目錄下報的錯,我這里是

    即在這個目錄下包的錯

    /home/wolf/.VimForCpp/vim/bundle/YCM.so/el7.x86_64/

    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.刪除原來軟連接:

    rm -rf libstdc++.so.6

    8.將默認庫的軟連接指向最新動態庫:

    ln -s libstdc++.so.6.0.26 libstdc++.so.6

    9.最后最后,自己去測試自己的程序,

    超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

    總結

    以上是生活随笔為你收集整理的关于如何升级gcc版本及相关的标准库问题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。