Я пытаюсь собрать исполняемую программу на базе Qt для Linux и статически связать Qt в двоичном виде. Согласно Qt docs , для этого мне понадобится собрать 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
из /usr/lib
.
В выводе из configure
сказано, что нужно пойти и найти «mkspec» для моей платформы, поэтому я посмотрел на Qt/5.13.1/Src/qtbase/mkspecs/linux-g++-64
(я явно сказал ему использовать эту платформу с командой -platform
). Я бродил вокруг и пытался установить эти envvars для различных комбинаций путей, которые казались правдоподобными, но безрезультатно.
Также упоминается файл config.log
. Когда я просматриваю этот файл, я вижу открытую 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
путь ...