https://www.crifan.com/figure_out_which_version_gcc_support_c11/
https://blog.csdn.net/joeblackzqq/article/details/77161575
操作系統是CentOS6.8的32位版本,yum自帶的gcc版本為4.4.7,不支持C++11特性。所以需要升級到4.8.5,至少要升級到4.8.1才完全支持C++11。
新系統是沒有安裝GCC的,而我們沒有gcc4.8.5的安裝包,只有源碼包,地址為:http://ftp.gnu.org/gnu/gcc/
源碼包gcc4.8.5不能直接安裝,所以我們需要先編譯源碼再安裝。所以我們還是先有一個編譯環境。yum提供了gcc4.4.7版本的安裝包,所以我們可以先安裝GCC4.4.7,這樣就有了編譯環境,就可以用來編譯gcc4.8.5,然后再安裝gcc4.8.5。
有人可能會覺得這個麻煩,為什么不能直接安裝gcc4.8.5呢?不是不可以,你得有這個版本的安裝包才行呀。如果有安裝包,就不需要安裝gcc4.4.7,也不需要編譯gcc4.8.5了,就可以直接安裝gcc4.8.5。
說一下我為什么選擇4.8.5版本,因為4.8.5是4.8.x最高的版本,按理說是4.8.x版本中最好的一個版本。因為4.8.1剛完全支持C++11,后面的幾個小版本肯定是小幅優化或者完善。具體做了什么優化完善,得看更新日志。
好了,背景知識介紹完畢,下面開始安裝過程。
1.獲取gcc4.8.5的源碼包(不同的版本,基本是只需要換掉后面的版本號即可更換下載地址)
- wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.bz2
2.解壓壓縮包
- tar -jxvf gcc-4.8.5.tar.bz2
3.進入解壓后的目錄
- cd gcc-4.8.5
4.下載、配置和安裝需要的依賴庫
- ./contrib/download_prerequisites
這個腳本文件會自動幫我們下載、配置、安裝依賴庫,可以節約我們大量的時間和精力。
5.直接在當前目錄下創建一個目錄,存放編譯后的文件。
- mkdir gcc-build-4.8.5
6.進入這個目錄來編譯
- cd gcc-build-4.8.5
7.生成Makefile文件,准備編譯整個項目(gcc4.8.5)
- ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
2.make
3.sudo make install
前面的..表示會進入到上一層目錄執行configure。所以gcc-build-4.8.5目錄必須在gcc-4.8.5里面創建,也就是我們這樣創建的。
8.直接用gcc4.8.5編譯程序會報錯誤:
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./test4)
解決方法:
新安裝的gcc的libstdc++.so.6的版本在/usr/local/lib下需要重新做軟鏈接到/usr/lib下就行。
libstdc++.so.6 -> /usr/local/lib/libstdc++.so.6.0.19