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

Posted

技术标签:

【中文标题】Fedora 26 dumpversion 上的 gcc 7.1.1 现在默认只包含主要版本【英文标题】:gcc 7.1.1 on Fedora 26 dumpversion now only includes major version by default 【发布时间】:2017-07-18 13:40:52 【问题描述】:

从 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。

【问题讨论】:

【参考方案1】:

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

gcc -dumpfullversion -dumpversion

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

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

4.4.7

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

7.2.1

【讨论】:

gcc 似乎忽略了它无法识别的 -dump* args,并在它识别出一个 args 后停止处理。这就是为什么它有效,为什么 -dumpfullversion 必须是第一!【参考方案2】:

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

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

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

【讨论】:

以上是关于Fedora 26 dumpversion 上的 gcc 7.1.1 现在默认只包含主要版本的主要内容,如果未能解决你的问题,请参考以下文章

在Fedora 26 OS中的VirtualHost上的YII 2应用程序 - Web进程无法写入该目录

Fedora 26/27/28网易云音乐安装

覆盆子上的 nginx + php-fpm + pidora(fedora)

Fedora 26 为多种系统提供稳定保障!

为啥 DraftSight 不能在配备 Intel 显卡的 Fedora 26 上运行?

fedora 26 安装 mplayer smplayer