1. 程式人生 > >LINUX下編譯c++11的程式碼

LINUX下編譯c++11的程式碼

 C++11,(即ISO/IEC 14882:2011),是目前的C++程式語言的最新正式標準。它取代了第二版標準(第一版公開於1998年,第二版於2003年更新,分別通稱C++98以及C++03,兩者差異很小)。新的標準包含核心語言的新機能,而且擴充套件C++標準程式庫。C++11新標準由C++標準委員會於2011年8月12日公佈,並於2011年9月出版。此次標準為C++98釋出後13年來第一次重大修正。

    像C++這樣的程式語言,通過一種演化的的過程來發展其定義。這個過程不可避免地將引發與現有程式碼的相容問題,在C++的發展過程中偶爾會發生。不過根據Bjarne Stroustrup

(C++的創始人並且是委員會的一員)表示,新的標準將幾乎100%兼容於現有標準。關於C++11的新特性和一些版本變更請看:C++11-維基百科

    目前最新版本的GCC/G++是4.8,新版本的GCC支援最新的C++11標準,十分值得去使用&學習。 下面讓我們在Ubuntu12.04 LTS用上GCC最新版本,去體驗C++11新標準帶來的東西吧!

首先非原始碼編譯式安裝:

[c++] view plain copy
  1. sudo add-apt-repository ppa:ubuntu-toolchain-r/test  
  2. sudo apt-get update  
  3. sudo apt-get install gcc-4.8   
  4. sudo apt-get install g++-4.8  

等GCC/G++下載並安裝完以後,測試是否安裝成功:

[c++] view plain copy
  1. gcc-4.8 -v  
  2. g++-4.8 -v  

如果顯示版本號表示安裝成功:


安裝成功後我們如果要使用gcc-4.8和g++-4.8來編譯的話,我們就得把gcc改為gcc-4.8,g++同理,改為g++-4.8來進行編譯。

此時使用gcc -v檢視預設版本,為4.6版本:


如果你想直接使用gcc-4.8而不改變編譯時gcc改為gcc-4.8的話,我們就可以更改一下gcc的軟連結:

[c++] view plain copy
  1. sudo rm /usr/bin/gcc  
  2. sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc  
  3. sudo rm /usr/bin/g++  
  4. sudo ln -s /usr/bin/g++-4.8 /usr/bin/g++  
現在我們用gcc -v來測試就能發現變為了4.8了!

既然GCC-4.8使用了最新的C++11標準,但是我們為什麼還是提示錯誤呢?解決方法如下:
在編譯的時候新增-std=c++11選項即可正常編譯C++11標準的程式碼!


  1. //第一種,直接包含在源程式檔案中,如第一行程式碼所示
  2. #pragma GCC diagnostic error "-std=c++11"
  3. #include <iostream>
  4. using namespace std;
  5. int main(int argc,char **argv)
  6. {
  7. cout<< "hello world!"<< endl;
  8. auto i= 10;
  9. cout<<i<< endl;
  10. return 0;
  11. }
  12. //第二種方法,可以直接取別名方法 如下所示:
  13. alias g++= 'g++ -std=c++11'
  14. g++ hw.cpp -o hw