13

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

新输出:

$ gcc -dumpversion
7

手册指出

-转储版本

打印编译器版本(例如,3.0、6.3.0 或 7)——不要做任何其他事情。这是文件系统路径、规范中使用的编译器版本,可能取决于编译器的配置方式,只有一个数字(主要版本)、两个由点分隔的数字(主要和次要版本)或三个由点分隔的数字(主要版本) 、次要版本和补丁级别版本)。

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

--with-gcc-major-version-only 指定 GCC 在文件系统路径中应该只使用主编号而不是 major.minor.patchlevel。

4

2 回答 2

20

我同时使用了这两个选项:

gcc -dumpfullversion -dumpversion

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

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

4.4.7

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

7.2.1

于 2017-11-21T09:51:46.383 回答
6

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

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

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

于 2017-07-19T19:18:55.993 回答