是否有编译器标记来使较新的gcc版本像旧版本一样进行构建?

时间:2019-07-23 04:45:24

标签: c++ gcc build msys2

我正在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?

2 个答案:

答案 0 :(得分:0)

似乎这不能用编译器标志解决,因此问题的答案为“否”。

解决方法::如果您无法修改源代码并且要在Windows下进行编译,则可以使用{@ {}中的MinGW Installer Utility下载特定版本的MinGW工具链。 3}}。这样,您可以选择要安装的GCC版本。

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

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

答案 1 :(得分:0)

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

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

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