【发布时间】:2017-05-07 03:51:57
【问题描述】:
我想在运行 centos 6.7 的工作站上从 Qt 5.6 迁移到 Qt 5.7。 Qt 5.6 一切正常,但下载并安装 Qt 5.7 后,我面临以下问题。
我正在尝试运行 elasticnode 示例来检查安装,但出现以下构建错误:
cc1plus: error: unrecognized command line option "-std=gnu++11"
此错误与 gcc 4.4.7 版本有关,无法识别此选项。 Qt 5.7 用于激活 c++11 功能的编译器标志是 -std=gnu++11,而 Qt 5.6 是 -std=gnu++0x,只有最后一个标志被 gcc 识别。
在 elasticnodes 示例的 .pro 文件中,没有设置任何内容,因此我假设 c+11 默认禁用,如文档http://doc.qt.io/qt-5/qmake-variable-reference.html#config 中所述,但这与最终生成的 gcc 命令行不一致通过 qmake。
所以我的问题是,如何删除新标志并将旧标志设置回 .pro 文件中,即-std=gnu++0x 而不是-std=gnu++11?
我尝试添加以下几行:
配置 -= c++11
QMAKE_CXXFLAGS += -std=gnu++0x
但我收到此错误:
/opt/Qt5.7.0/5.7/gcc_64/include/QtCore/qbasicatomic.h:61: error: #error "Qt requires C++11 support"
有谁知道如何正确设置这个标志?
【问题讨论】:
-
5.7 还支持这么老的编译器吗?
-
根据doc.qt.io/qt-5/supported-platforms.html,支持gcc 4.9.1,但如果可能我不希望升级编译器
-
IIRC 你至少需要 4.8.x 或类似的东西,如果你从源代码构建它。预构建版本极不可能与这样的旧编译器一起使用。正如错误所说 - 你需要一个 C++11 编译器。
-
作为另一种选择,您可以尝试 clang 使用 Qt 5.7 而不是 gcc 来构建您的项目。