是否有编译器标志可以使较新的 gcc 版本像旧版本一样构建
Is there a compiler flag to make newer gcc versions build like old ones did?
我在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=
相关文章:
- 在一个解决方案中针对第三方静态库 (Creo) 的不同版本(版本)进行构建
- 解决与构建"Debug x64"版本的暗网相关的错误
- 使用 qmake 构建二进制文件的多个版本
- BOOST :: MUTEX版本与调试构建
- 在Travis中为CMAKE构建指定编译器版本
- 从命令行构建一个.sln / .vcxproj项目,并使用Visual C 的免费版本构建
- 是否有编译器标志可以使较新的 gcc 版本像旧版本一样构建
- Google的protobuf版本是用-std=c++98或-std=c++03构建的?
- 设置用G 构建的二进制版本的任何方法
- Microsoft Visual Studio 2008,版本9.0.30739.1 SP,DLL构建错误
- 混合模式程序集是针对版本 'v2.0.50727' 构建的 ...本机C++/Visual C++/C# 项目错误
- 如何将 git 版本信息添加到 cython 构建的 .so 文件中?
- 用Cmake构建在一个QTCreator版本中与另一个QTCreator版本一起使用,并与terminal的Catkin
- CI for Qt 应用程序:使用不同的 Qt 版本构建
- 混合使用不同编译器版本构建的二进制文件
- 建议的GCC版本构建标志
- 如何在 RHEL 上为新的 Boost 版本构建/部署 RPM
- 我如何从Qt -everywhere-opensource-src-5.6.1.tar.gz(或更高版本)构建Qt 5.
- 使用已经安装的trilinos版本构建pytrilinos
- 程序只在发布版本构建时崩溃——如何调试