2013-06-29 80 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特定命令的程序。 –