【问题标题】:Compiling Qt on Linux Mint - The OpenGL functionality test failed在 Linux Mint 上编译 Qt - OpenGL 功能测试失败
【发布时间】:2017-01-09 19:30:25
【问题描述】:

在 Windows 上构建 Qt 找到了,但我在 Linux Mint 18 上构建它时遇到了一些问题。我下载了 qt-everywhere-opensource-src-5.7.0.tar.gz 并将其解压缩到 /home/user /Qt-静态/Qt5.7.0/。然后我使用以下命令运行配置:

./configure -platform linux-g++-32 -prefix /home/user/Qt-Static/Qt5.7.0 -static -opensource -confirm-license -opengl desktop -make libs

一开始我遇到了一个错误:

致命错误:bits/c++config.h:没有这样的文件或目录

在网上搜索我发现解决这个问题的方法是安装 gcc-multilib 和 g++-multilib。之后,当我运行配置时,我得到以下输出,其中包含错误“OpenGL 功能测试失败!”

Creating qmake...
.........................................................................................Done.
Running configuration tests...
checking for C++11...  yes.
checking for C++14...  yes.
checking for C++1z...  yes.
checking for default C++ standard edition...  yes.
checking for 64-bit std::atomic...  yes.
checking for sse2...  yes.
checking for sse3...  yes.
checking for ssse3...  yes.
checking for sse4_1...  yes.
checking for sse4_2...  yes.
checking for avx...  yes.
checking for avx2...  yes.
checking for avx512f...  yes.
checking for avx512er...  yes.
checking for avx512cd...  yes.
checking for avx512pf...  yes.
checking for avx512dq...  yes.
checking for avx512bw...  yes.
checking for avx512vl...  yes.
checking for avx512ifma...  yes.
checking for avx512vbmi...  yes.
checking for ipc_sysv...  yes.
checking for zlib...  no.
checking for mtdev...  no.
checking for libjpeg...  no.
checking for libpng...  no.
checking for libdl...  yes.
checking for DB2...  no.
checking for InterBase...  no.
checking for MySQL (thread-safe)...  no.
checking for MySQL (thread-unsafe)...  no.
checking for OCI...  no.
checking for ODBC...  no.
checking for iODBC...  no.
checking for PostgreSQL...  no.
checking for SQLite2...  no.
checking for TDS...  no.
checking for NIS...  yes.
checking for Cups...  no.
checking for POSIX iconv...  yes.
checking for D-Bus...  no.
checking for libproxy...  no.
checking for Glib...  no.
checking for ICU...  no.
checking for PulseAudio...  no.
checking for OpenGL...  no.
The OpenGL functionality test failed!
 You might need to modify the include and library search paths by editing
 QMAKE_INCDIR_OPENGL, QMAKE_LIBDIR_OPENGL and QMAKE_LIBS_OPENGL in
 /home/user/Qt-Static/Qt5.7.0/qtbase/mkspecs/linux-g++-32.

在此之后不会生成任何 makefile。搜索此错误时,我发现了许多具有相同问题的问题,以及各种建议的解决方案,但我找不到任何有效的方法。

我对 Linux 一无所知。看来我必须设置QMAKE_INCDIR_OPENGLQMAKE_LIBDIR_OPENGLQMAKE_LIBS_OPENGL,但实际上我不确定将它们设置为什么。

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 您是否安装了所有用于构建的 Opengl 库?一般不需要自己设置路径,但是可以在qmake.conf中设置。对我来说,这个错误看起来你还没有安装所有必需的 opengl 包。
  • 我安装了 mesa-common-dev、libglu1-mesa-dev 和 libgl1-mesa-dev,但我认为这三个都说,“0 升级,0 新安装”所以他们都似乎与薄荷一起出现。还有什么我需要的吗?

标签: c++ linux qt


【解决方案1】:

我发现从我的配置参数中删除-opengl desktop 可以解决问题。

在 Windows 上,我需要使用 -opengl desktop,否则会收到 OpenGL ES 错误消息。当我在 Linux 上运行 configure 时,我使用了相同的命令,只是更改了 -platform 和 -prefix 参数,所以 -opengl desktop 仍然存在。我忘记了它在那里,但是当我注意到我尝试删除它并且它起作用时,Qt 现在正在编译。感谢您的帮助。

【讨论】:

  • 嗨,我和你有同样的问题。我使用的是 Ubuntu 16.04,但我不明白你是如何删除 -opengl 桌面的。您能否提供调试此问题的具体步骤?谢谢。
  • 对不起,我刚看到这个。可能为时已晚,但我会解释的。为了让 Qt 在 Windows 上编译,我必须使用-opengl desktop,因为没有它我会遇到 OpenGL ES 错误。当我在 Linux 上编译 Qt 时,我使用的配置参数与在 Windows 上基本相同,但这导致了我最初的帖子中描述的错误。我最终将问题追溯到-opengl desktop 开关,因此我将其从我在 Linux 上的配置参数中排除。因此,除了不指定 -opengl desktop 之外,您无需执行任何操作即可删除它。因此,我怀疑您的问题可能有所不同。
【解决方案2】:

根据opengl-for-ubuntu14-building-qt-5-4,安装libgl1-mesa-dev会让你用-opengl desktop编译

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多