我在Ubuntu 14.04 LTS上使用g ++ 4.8.4。当尝试使用'-std = c ++ 14'进行编译时,我收到此错误:
g++: error unrecognized command line option '-std=c++14'
使用'-std = c ++ 11'编译工作正常,所以我不确定发生了什么。 g ++真的不支持c ++ 14吗?我使用了错误的命令行选项吗?
我用过“sudo apt-get install g ++”这应该会自动检索最新版本,这是正确的吗?
答案 0 :(得分:53)
对于gcc 4.8.4
,您需要在更高版本中使用-std=c++1y
,看起来从5.2
开始,您可以使用-std=c++14
。
如果我们查看gcc online documents,我们就可以找到每个gcc版本的手册,我们可以通过Dialect options for 4.9.3下的GCC 4.9.3 manual查看:
“C ++ 1Y”
ISO C ++标准的下一版本,暂定于2014年计划。支持是高度实验性的,并且几乎肯定会在未来版本中以不兼容的方式发生变化。
所以4.9.3
你需要使用-std=c++1y
而gcc 5.2 options说:
“C ++ 14” “C ++ 1Y”
2014年ISO C ++标准加上修正案。不推荐使用名称“c ++ 1y”。
我不清楚为什么会在Options Controlling C Dialect
下列出,但这就是目前文件的组织方式。
答案 1 :(得分:14)
GCC 4.8不支持-std=c++14
标志。如果要使用C ++ 14功能,则需要使用-std=c++1y
进行编译。使用godbolt.org似乎支持-std=c++14
的最早版本是GCC 4.9.0或Clang 3.5.0
答案 2 :(得分:4)
G ++确实通过-std=c++14
和-std=c++1y
支持C ++ 14。后者是该标准的通用名称,然后才知道它将在哪一年发布。在旧版本(包括您的版本)中,只接受后者,因为发布这些版本时发布年份尚不清楚。
我用过" sudo apt-get install g ++"应该自动检索最新版本,这是正确的吗?
它安装了Ubuntu存储库中提供的最新版本,而不是现有的最新版本。
最新的GCC版本是5.2。
答案 3 :(得分:1)
按照https://gist.github.com/application2000/73fd6f4bf1be6600a2cf9f56315a2d91上的说明在Ubuntu 14.04上设置所需的gcc版本-gcc 5或gcc 6。这些说明包括配置update-alternatives
以允许您根据需要在版本之间进行切换。