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进程无法写入该目录
覆盆子上的 nginx + php-fpm + pidora(fedora)