2013-06-29 81 views
18

我使用的是Ubuntu 12.04,默認gcc是4.6.3。它不接受C++ 11的命令,並給我輸出說這個命令不是C++ 98兼容的。我在網上查了一下,看到有人建議不要在操作系統上更改默認編譯器,因爲它變得不穩定。任何人都可以建議下載符合C++ 11的gcc編譯器的修復方法或安全方式。如何將gcc編譯器更改爲ubuntu上的C++ 11

+8

'G ++ -std = C++ 11'或者如果沒有work,'g ++ -std = C++ 0x' – jxh

+2

您可以隨系統安裝另一個版本的GCC。你甚至可以自己編譯另一個版本。網絡中有很多教程 - 只需使用您的首選搜索引擎即可。 GCC通常將其可執行文件後綴爲版本號,並將其特定庫安裝在版本化目錄中,以便新版本不會與系統提供的版本衝突。 –

回答

15

gcc 4.6.3 supports many c++11 features。但是,它們默認是禁用的。要啓用它們,請使用以下標誌:

g++ -std=c++0x ... 

此標誌還禁用GNU擴展;要使它們保持啓用狀態,請使用-std=gnu++0x標誌。

+0

所以我需要輸入命令編譯爲g ++ -o可執行文件filename.cc -std = C++ 0x是嗎? –

+1

@talasila正確。你可能要考慮將gcc升級到4.8,[它有更好的C++ 11支持](http://gcc.gnu.org/gcc-4.8/cxx0x_status.html)。 – dasblinkenlight

+0

如何將我的默認編譯器更新爲新的編譯器。爲什麼人們說不要在操作系統中刪除現有的gcc版本,因爲它會導致系統不穩定?這是真的嗎? –

21

正如其他人所建議的,您需要輸入std命令行選項。讓我們很容易讓你

    按Ctrl + Alt鍵 + 牛逼
  1. 打開終端
  2. sudo gedit ~/.bashrc
  3. 輸入以下命令行作爲最後一行

    alias g++="g++ --std=c++0x" 
    
  4. 保存並關閉文件並關閉終端。
  5. 現在打開終端再次和g++ filename.cpp

這就是它編譯C++程序11簡單。默認情況下,它將編譯爲C++ 11標準。

注:如果你按照上面提到的選項,編譯非C++ 11名的程序,你必須使用

g++ --std=c++98 filename.cpp 
+0

好的。謝謝。但是在最後一個註釋中,您提到要編譯非C++ 11程序,請更改命令。但並非每個版本都向後兼容。因此,C++ 11編譯器應該編譯甚至沒有C++ 11特定命令的程序。 –