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

gcc 7.1.1 on Fedora 26 dumpversion now only includes major version by default

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

新输出:

$ gcc -dumpversion
7

手册说明

-dumpversion

Print the compiler version (for example, 3.0, 6.3.0 or 7)—and don’t do anything else. This is the compiler version used in filesystem paths, specs, can be depending on how the compiler has been configured just a single number (major version), two numbers separated by dot (major and minor version) or three numbers separated by dots (major, minor and patchlevel version).

我没有找到在哪里更改此编译器配置以包括用点配置的三个数字。我找到的最接近的是仅主要版本的配置:

--with-gcc-major-version-only Specifies that GCC should use only the major number rather than major.minor.patchlevel in filesystem paths.

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

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

所以我们不得不更改构建系统以通过 gcc -dumpversion 获取版本并检查它是否是单个数字,如果是则替换 -dumpfullversion 以获得完整的 major.minor.patch gcc版本。

我同时使用了两个选项:

gcc -dumpfullversion -dumpversion

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

[root@zeta ~]# gcc -dumpfullversion -dumpversion

4.4.7

[jenkins@build-el7 ~]$ gcc -dumpfullversion -dumpversion

7.2.1