是否有编译器标志可以使较新的 gcc 版本像旧版本一样构建

Is there a compiler flag to make newer gcc versions build like old ones did?

本文关键字:版本 构建 一样 gcc 标志 编译器 可以使 是否      更新时间:2023-10-16

我在Windows 7上使用MSys2/MinGW来构建一个旧项目。 MSys2 仅使用最新版本的 gcc,使用 gcc v9.1.0 构建项目失败,因为它找不到重载的"<<"运算符。

通过反复试验(和Cygwin(,我发现gcc v6.4.0构建了项目,而v7.x没有。

是否有CCFLAGS或CXXFLAGS选项可用于使gcc v9.1.0的行为就像v6.4.0一样?

这似乎不能用编译器标志来解决,所以问题的答案是"否"。

解决方法:如果您处于无法修改源代码的位置,并且正在Windows下进行编译,请使用MinGW安装程序实用程序从此处下载特定版本的MinGW工具链。 这使您可以选择要安装的 GCC 版本。

如果您更改 PATH 变量以将新的 MinGW 安装目录放在第一位,您仍然可以使用 MSys/MinGW shell,方法是在.profile中添加如下行:

export PATH=/c/mingw-w64/x86_64-6.4.0-win32/mingw64/bin:$PATH

您可以使用

-std=编译器标志告诉GCC使用较旧的C/C++标准,例如g++选项-std=c++11以使其符合ISO 2011 C++标准。

要获取所有可能的-std=命令行标志的列表,请运行:

g++ --help -v 2>/dev/null|grep std=