G++ 版本和标准选项

G++ version and std option

本文关键字:选项 标准 版本 G++      更新时间:2023-10-16

我看到我的一个makefile,并看到以下命令。

g++-5 -std=c++11 

据我了解,std 选项代表了这一点——

GCC 支持不同的C++方言,对应于多个已发布的 ISO 标准。可以使用 -std= 命令行选项选择它实现的标准。

g++ 命令中的 -5 表示什么?

-5是实际 g++ 可执行文件名称的一部分。名称的确切选择基本上取决于操作系统或发行版的维护者。以这种方式命名可执行文件允许并行安装多个 GCC 版本,此功能通常很有用,例如,如果您想向各种用户提供软件并希望确保不同的编译器版本可以处理您的代码。例如,在我的一个(稍旧的(盒子上,我目前看到

$ ls -l /usr/bin/g++*
lrwxrwxrwx 1 root root      7 Apr  8  2014 /usr/bin/g++ -> g++-4.8
-rwxr-xr-x 1 root root 259176 Mar 20  2014 /usr/bin/g++-4.4
-rwxr-xr-x 1 root root 775888 May  7  2016 /usr/bin/g++-4.8
$ /usr/bin/g++-4.4 --version
g++-4.4 (Ubuntu/Linaro 4.4.7-8ubuntu1) 4.4.7
Copyright (C) 2010 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.
$ /usr/bin/g++-4.8 --version
g++-4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
Copyright (C) 2013 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.

不同的编译器版本不仅对C++标准功能有不同的支持,还可能有不同的错误或怪癖。

关于GCC对不同版本的C++标准的支持,请参阅 https://gcc.gnu.org/projects/cxx-status.html。 例如,一些 C++17 语言功能仅在 GCC 5.1 中引入。

g

++ 旁边的参数 -n 表示 GNU C++ 您想要编译代码的编译器版本

5几乎

肯定意味着GCC的版本,在这种情况下是5.something。

拥有这样的名称可以更轻松地在同一系统上混合不同的版本。

您可以通过运行来确认这一点

g++ --version

你应该得到类似的东西

g++ (GCC( 5.2.0

您对 -std 选项的看法是正确的。除了已发布的版本外,通常还支持即将发布的版本。您可以在此处找到支持的摘要,并在此处找到计划于 C++20 年推出的功能-std=c++2a等选项。