版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明。 本文鏈接:https://blog.csdn.net/lianshaohua/article/details/83411684 centos7系統(tǒng)自帶的是gcc 4.8.5的,對c++11支持還算比較好。目前,c++14、c++17的標準都已出臺,c++20還會遠嗎? 為了更好的學(xué)習(xí)和工作,說白了就是為了嘗鮮,老廣干什么事情都是要嘗鮮的,所以身在廣東的我,也準備嘗嘗鮮,把centos7的gcc升級到gcc最新版本,目前最新的版本是gcc8.2(詳見:https://gcc./) 接下來升級, 有些軟件的安裝升級可以從編譯好的二進制包升級,免去了構(gòu)建的痛苦,但gcc必須從源碼升級,必須經(jīng)歷編譯的痛苦。 具體升級步驟如下: (建議至少要有12GB以上的空閑空間) 第一步:下載gcc8.2源碼 我習(xí)慣使用git,所以早已在centos安裝了git,gcc的gitURL:https://github.com/gcc-mirror/gcc,在瀏覽器打開這個網(wǎng)址后,不要急于下載,先選擇gcc的版本,如下圖所示: 先點擊“Branch:master”,再點擊“Tags” 最后找到gcc 8.2,點擊"gcc-8_2_0-release"完成Tags的切換 進入自己的home目錄執(zhí)行如下命令: git clone --branch gcc-8_2_0-release https://github.com/gcc-mirror/gcc.git 下載時間視網(wǎng)速而定,源碼大概有3.3GB的樣子,所以慢慢等。下載完成后進入第二步。 由于最近被限速了,所以建議大家下載壓縮包(http://ftp.tsukuba.wide./software/gcc/releases/gcc-8.2.0/) 第二步:安裝依賴庫 以前升級gcc非常麻煩,因為gcc依賴了mpfr、gmp、mpc 和isl共四個庫,下載也麻煩 ,現(xiàn)在簡單了。 在gcc目錄,執(zhí)行:./contrib/download_prerequisites 此命令會自動把gcc需要的這幾個依賴庫下載完成 第三步:配置、編譯、 在gcc目錄,執(zhí)行配置命令:./configure --prefix=/usr --enable-multilib 如果只需要支持c,c++編譯器,則執(zhí)行配置命令:./configure --prefix=/usr --enable-multilib --enable-languages=c,c++ 可能會報錯:configure: error: I suspect your system does not have 32-bit development libraries (libc and headers). If you have them, rerun configure with --enable-multilib. If you do not have them, and want to build a 64-bit-only compiler, rerun configure with --disable-multilib.(意思是說:沒有找到32位的開發(fā)庫,如果不想編譯支持多平臺的gcc,可以使用--disable-multilib重新配置),大咖怎么能不支持多平臺的編譯呢?所以安裝32位的開發(fā)庫吧,使用如下命令: sudo yum install libgcc.i686 sudo yum install glibc-devel.i686 安裝完成后,再次執(zhí)行命令:./configure --prefix=/usr --enable-multilib 應(yīng)該不會報錯了,且會生成Makefile,然后編譯: make #建議使用單任務(wù)make,不要使用多任務(wù),多任務(wù)有可能會編譯報錯。 經(jīng)過漫漫漫漫長的等待,終于make完成了,然后執(zhí)行: sudo make install 安裝完成的最后信息截圖如下: 最后使用gcc --version 查看gcc的版本: ———————————————— 版權(quán)聲明:本文為CSDN博主「ztenv」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/lianshaohua/article/details/83411684 |
|