我正在尝试为 Linux 构建一个基于 Qt 的可执行程序,并在二进制文件中静态链接 Qt。根据Qt 文档,为此我需要从源代码构建 Qt,从以下命令开始:
cd /path/to/Qt
./configure -static -prefix /path/to/Qt
当我尝试这个时,我得到了一长串输出,结尾是:
ERROR: The OpenGL functionality tests failed!
You might need to modify the include and library search paths by editing QMAKE_INCDIR_OPENGL[_ES2],
QMAKE_LIBDIR_OPENGL[_ES2] and QMAKE_LIBS_OPENGL[_ES2] in the mkspec for your platform.
Check config.log for details.
这不是我第一次遇到 OpenGL 和 Qt 的问题......当我使用动态链接(使用二进制 Qt 库)构建程序时,我遇到了类似的问题,我通过符号链接到libGL.so
from解决了该问题/usr/lib
。
输出显示configure
去查找适用于我的平台的“mkspec”,所以我查看了Qt/5.13.1/Src/qtbase/mkspecs/linux-g++-64
(我明确告诉它使用命令中的平台-platform
)。我四处寻找并尝试将这些环境变量设置为看似合理的各种路径组合,但无济于事。
它还提到了一个config.log
文件。当我查看此文件时,我只能在此块中看到 Open GL 的提及:
loaded result for library config.qtbase_gui.libraries.opengl
Trying source 0 (type pkgConfig) of library opengl ...
+ /usr/bin/pkg-config --exists --silence-errors gl
pkg-config did not find package.
=> source produced no result.
Trying source 1 (type makeSpec) of library opengl ...
Include path /usr/include/libdrm is invalid.
header entry 'config.qtbase_gui.libraries.opengl.headers.0' passed condition.
GL/gl.h not found in [/usr/include/libdrm] and global paths.
=> source produced no result.
test config.qtbase_gui.libraries.opengl FAILED
loaded result for library config.qtbase_gui.libraries.opengl_es2
Trying source 0 (type pkgConfig) of library opengl_es2 ...
+ /usr/bin/pkg-config --exists --silence-errors glesv2
pkg-config did not find package.
=> source produced no result.
Trying source 1 (type makeSpec) of library opengl_es2 ...
None of [libGLESv2.so libGLESv2.a] found in [] and global paths.
=> source produced no result.
test config.qtbase_gui.libraries.opengl_es2 FAILED
确实pkg-config --print-errors --exists gl
找不到任何东西。不知道这条/usr/include/libdrm
路径是从哪里来的...
答案1
谢谢你!
按照@Michael_Hirsch 的建议,我可以通过安装其他人上面列出的软件包,然后从 github 上完全删除并重新克隆 repo 来生成构建文件。
(Qt5 是我试图编译的项目)