关于Fedora 26 dumpversion的gcc 7.1.1现在默认只包含主要版本

Jak*_*164 5 version gcc7

从Fedora 25升级到26后,默认的gcc版本现在是版本7.1.1,输出gcc -dumpversion已从major.minor.patch更改为major.

新产出:

$ gcc -dumpversion
7
Run Code Online (Sandbox Code Playgroud)

手册说明

-dumpversion

打印编译器版本(例如,3.0,6.3.0或7) - 并且不执行任何其他操作.这是文件系统路径中使用的编译器版本,规格,可以取决于编译器如何配置只有一个数字(主要版本),两个数字用点分隔(主要和次要版本)或三个数字用点分隔(主要,次要和补丁级版本).

我还没有找到更改此编译器配置的位置以包含使用点配置的三个数字.我发现的最接近的是仅限主要版本的配置:

--with-gcc-major-version-only指定GCC应仅使用主文件而不是文件系统路径中的major.minor.patchlevel.

小智 10

我一起使用了两个选项:

gcc -dumpfullversion -dumpversion
Run Code Online (Sandbox Code Playgroud)

这似乎以统一的方式适用于新旧:

[root@zeta ~]# gcc -dumpfullversion -dumpversion
Run Code Online (Sandbox Code Playgroud)

4.4.7

[jenkins@build-el7 ~]$ gcc -dumpfullversion -dumpversion
Run Code Online (Sandbox Code Playgroud)

7.2.1

  • 看起来 gcc 会忽略它无法识别的“-dump*”参数,并在识别后停止处理参数。这就是为什么它有效,以及为什么 `-dumpfullversion` 必须是第一个! (7认同)

Jak*_*164 6

所以经过一些研究,我发现配置版本是一个编译时选项(如果你从源代码编译编译器)。

我还发现有一个新gcc -dumpfullversion选项可以提供完整的版本号,即 7.1.1,这是我们的构建系统所期望的。需要注意的是,-dumpfullversion旧版本的 gcc 不支持它。

因此,我们必须更改构建系统以获取版本gcc -dumpversion并检查它是否为单个数字,如果是,则替换-dumpfullversion以获取完整的 Major.minor.patch gcc 版本。