cc1plus:错误:g ++无法识别的命令行选项“ -std = c ++ 11”


90

我正在尝试使用g++和编译-std=c++11c++0x标志。

但是,我得到这个错误

cc1plus: error: unrecognized command line option "-std=c++11"

g ++ --version

g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

5
-std=c++0x使用g ++
斯特凡

2
@stefan错误,两者皆有可能。您使用的是哪个GNU版本?仅在> = 4.3中支持C ++ 11。
antonijn

2
运行g++ --version。然后在此处发布版本号。
Konfle Dolex

3
那太老了。该版本不支持C ++ 11。安装更高的版本,例如4.7,以支持C ++ 11。
Konfle Dolex

4
这是可能的系统管理员没有安装C ++ 11能够编译器,但没有做它的默认值。您可以通过尝试g++-在控制台窗口中自动完成命令来检查安装了哪个特定版本的GCC 。
Bart van Ingen Schenau 2013年

Answers:


105

从您的G ++版本来看,您需要对其进行严重更新。C ++ 11自G ++ 4.3起才可用。最新版本是4.7。

在G ++ 4.7之前的版本中,您必须使用-std=c++0x,对于较新的版本,您可以使用-std=c++11


1
4.8.0是否很好用,还是3月有实际发布的版本?
克里斯

@chris我很抱歉,应该是4.7,4.8仍在开发中。
antonijn

@Antonijn,嗯,我要等一两个月。我更喜欢稳定的发行版,或者您想要使用的更好的词汇。
克里斯

@chris是的。或者,您只是等待linux mint更新管理器通知您:)
antonijn

2
@JoeCoderGuy是的,这就是我正在使用的那个。
antonijn

14

gcc网站报价:

C ++ 11功能在GCC的Subversion存储库主干中以及在GCC 4.3及更高版本中作为“主线” GCC编译器的一部分提供。要启用C ++ 0x支持,请将命令行参数-std = c ++ 0x添加到您的g ++命令行中。或者,要启用除C ++ 0x扩展之外的GNU扩展,请在您的g ++命令行中添加-std = gnu ++ 0x。GCC 4.7和更高版本也支持-std = c ++ 11和-std = gnu ++ 11。

因此,可能您使用的是不支持的g ++版本-std=c++11。试试吧-std=c++0x

C ++ 11功能的可用性仅适用于> = 4.3的版本。


@Antonijn正确,但不是所有人的选择。
stefan 2013年

@Antonijn:某些软件与版本> 4.1不兼容。例如ABACUS informatik.uni-koeln.de/abacus/index.html可悲的是,我不得不使用它一次。
stefan 2013年

3

你应该试试这个

g++-4.4 -std=c++0x or g++-4.7 -std=c++0x

-4

我也遇到了同样的错误,使用-D标志进行了修复,请尝试以下操作:

g ++ -Dstd = c ++ 11


为什么这样投票?答案有什么问题?为什么不起作用?
Veda

至少对我来说@Veda(在gcc4.6.3上),它绝对不是用c ++ 11编译的。我编写了一个简单的两行程序来std::vector<int> v = {1, 2, 3};进行测试,并且在该程序上引发了各种错误(尽管有很多错误,但没有标志,这很有趣)。
scohe001

6
@Veda虽然此答案可以编译,但很可能并没有执行任何操作。该-D命令行参数相当于插入#define在源代码中。所以这个命令就像#define std c++11。然后,您能想象如何std::string将其重新定义为c++11::string吗?根本不是很有用。
jwm
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.