【问题标题】:Using Qt 5.7.0 with gcc 4.4.7 on centos 6.7在 centos 6.7 上使用 Qt 5.7.0 和 gcc 4.4.7
【发布时间】: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 来构建您的项目。

标签: qt c++11 qmake


【解决方案1】:

Qt 5.7 需要 C++11 编译器。因此,支持的最低 GCC 版本是 GCC 4.6(但强烈推荐更高版本)。您可以安装 devtoolset(例如 devtoolset-2,请参阅 here)以获得更好的编译器。

【讨论】:

  • 谢谢,事实上,我认为我没有其他选择在 centos 6.7 上使用 Qt 5.7 和 GCC。
猜你喜欢
  • 1970-01-01
  • 2017-06-04
  • 2016-07-01
  • 1970-01-01
  • 2019-07-09
  • 2016-02-10
  • 1970-01-01
  • 2016-10-05
  • 2016-07-25
相关资源
最近更新 更多