Opengl для Ubuntu14 (сборка QT 5.4)
У меня свежая установка Ubuntu 14 LTS
с этого утра я использую компьютер с Nvidia graphic cards
и я успешно установил последнюю версию драйвера с сайта Nvidia (NVIDIA-Linux-x86_64-352.30
).
Я пытаюсь построить QT 5.4
(qt-where-opensource-src-5.4.2), и я столкнулся с проблемой, связанной с невозможностью найти opengl.
Я установил следующие пакеты, чтобы разрешить все зависимости:
sudo apt-get update
sudo apt-get install libxi-dev build-essential libdbus-1-dev libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libx11-xcb-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev
и наконец:
sudo apt-get install mesa-common-dev
sudo apt-get install libglu1-mesa-dev
Насколько я знаю, выше следует полностью установить пакеты opengl для Ubuntu.
Затем я пытаюсь настроить QT, используя следующую команду:
./configure -v -confirm-license -developer-build -opensource -xinput2 -dbus -opengl desktop -nomake examples -nomake tests)
Я получаю следующую ошибку:
OpenGL auto-detection... ()
g++ -c -pipe -O2 -Wall -W -fPIC -I. -I../../../mkspecs/linux-g++ -o opengldesktop.o opengldesktop.cpp
g++ -Wl,-O1 -o opengldesktop opengldesktop.o -lGL
/usr/bin/ld: cannot find -lGL
collect2: error: ld returned 1 exit status
make: *** [opengldesktop] Error 1
OpenGL disabled.
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
Я уже некоторое время искал, и могу только предположить, что у меня установлены все нужные пакеты, но в системном пути чего-то не хватает. Чего не хватает и как мне добавить его в системный путь?
Следующий вывод может помочь:
ldconfig -p | grep libGL.so
libGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so.1
libGL.so.1 (libc6,x86-64) => /usr/lib/libGL.so.1
6 ответов
Столкнулся с той же проблемой в Debian 8.5: драйвер Nvidia + все библиотеки, рекомендуемые в Building Qt5 из Git, установлены, но на шаге настройки Qt 5.9 произошла ошибка из- за отсутствия поддержки OpenGL.
Выдержка:
- Qt configure проверяет поддержку openGL, связывая вещи с
libGL.so
- но библиотека отсутствует libGL.so
обеспечиваетсяlibgl1-mesa-glx
это добавляет символическую ссылку изlibGL.so
вlibGL.so.x.y.z
(в моем случаеlibGL.so.1.2.0
)- в соответствии с
dpkg
,libGL.so.1.2.0
также является частьюlibgl1-mesa-glx
- но отсутствует по "причинам" - проверка других версий
libGL.so
показывает, что есть версия библиотеки, установленная драйвером Nvidia (/usr/lib/x86_64-linux-gnu/libGL.so.346.35
) добавление символической ссылки на этот файл решило проблему
sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.346.35 /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0
- повторный запуск
configure
используя флаг-recheck
Пошаговая процедура (также может применяться к аналогичным вопросам):
$ ./configure -opensource -confirm-license -recheck -v 1>dump 2>&1
...
> grep 'libGL.so.*No' dump
> /usr/bin/ld.gold: error: cannot open /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libGL.so: No such file or directory
> /usr/bin/ld.gold: error: cannot open /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libGL.so: No such file or directory
$ ls -l /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libGL.so
lrwxrwxrwx 1 root root 14 Aug 19 2015 /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libGL.so -> libGL.so.1.2.0
Отсутствует libGL.so.1.2.0, проверьте провайдера...
$ dpkg -S libGL.so.1.2.0
libgl1-mesa-glx:amd64: /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0
$ dpkg -l libgl1-mesa-glx
...
||/ Name Version Architecture Description
+++-========================================-=========================-=========================-=====================================================================================
ii libgl1-mesa-glx:amd64 10.3.2-1+deb8u1 amd64 free implementation of the OpenGL API -- GLX runtime
Так libgl1-mesa-glx
библиотека установлена, но libGL.so.1.2.0
отсутствует на пути. Проверьте на другие libGL.so*
файлы...
$ find /usr/lib -name libGL.so*
/usr/lib/x86_64-linux-gnu/libGL.so.346.35
/usr/lib/x86_64-linux-gnu/libGL.so.1
/usr/lib/x86_64-linux-gnu/libGL.so
/usr/lib/libGL.so.1
/usr/lib/x86_64-linux-gnu/libGL.so.346.35
является единственной допустимой библиотекой openGL на моем компьютере (была установлена установщиком драйвера Nvidia).
Решение:
sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.346.35 /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0
У меня была такая же проблема на Ubuntu 16.04 с Qt 5.9. Сначала я запустил конфигурацию, когда libgl1-mesa-dev и libglu1-mesa-dev не были установлены. После этого я установил эти библиотеки libgl*. Но ошибка "OpenGL not found" осталась. Ошибка исчезла после удаления текущего несжатого каталога и повторной распаковки архива.
Приведенное ниже решение не помогло мне на более поздней стадии, когда clang-C++ не смог правильно скомпилировать исходный код qt. Так что опубликовать другое решение с помощью самого компилятора g++.
Следующие шаги обнаруживают Desktop OpenGL в 32-битной системе Mint 17.3 с картой Nvidia и проприетарными драйверами. в файле /root/work/qt5_setup/qt-everywhere-src-5.10.0/qtbase/mkspecs/common/linux.conf, который включен в /root/work/qt5_setup/qt-everywhere-src-5.10.0/qtbase/mkspecs/linux-g++/qmake.conf
переменные среды должны быть установлены в:
QMAKE_INCDIR_OPENGL = "/ usr / include / GL" QMAKE_LIBDIR_OPENGL = "/ usr / lib /" QMAKE_INCDIR_OPENGL_ES2 = $$ QMAKE_INCDIR_OPENGL QMAKE_LIBDIR_OPENGL_ES2 = $IBMAKOPKE
QMAKE_LIBS_OPENGL = -lGL QMAKE_LIBS_OPENGL_ES2 = -lGLESv2
Библиотека libGL использовала указатель на библиотеку драйвера Nvidia в моей системе. /usr/lib/libGL.so -> /usr/lib/i386-linux-gnu/libGLX_nvidia.so.390.48
Тогда как /usr/lib/i386-linux-gnu/libGL.so -> mesa/libGL.so для Mesa3D предоставлена библиотека.
Также убедитесь, что установлены mesa-common-dev, libglu1-mesa-dev, libgl1-mesa-dev и другие пакеты разработки OpenGL.
/root/work/qt5_setup/qt-everywhere-src-5.10.0/configure --prefix = / root / work / qt5_setup / qt_install -opensource -confirm-license -платформа linux-g++ && make -j 5
Следующее обнаруживает Desktop OpenGL в 32-битной системе Mint 17.3 с картой Nvidia и проприетарными драйверами. /root/work/qt5_setup/qt-everywhere-src-5.10.0/configure --prefix=/root/work/qt5_setup/qt_install -opensource -confirm-license -платформа linux-clang-libC++
Варианты платформ можно найти в /root/work/qt5_setup/qt-everywhere-src-5.10.0/qtbase/mkspecs
Перед установкой установите clang (компилятор C, C++ и Objective-C (на основе LLVM)) и libC++-dev (стандартная библиотека LLVM C++ (файлы для разработки))
LLVM - это набор библиотек и инструментов, которые облегчают создание компиляторов, оптимизаторов, генераторов кода "точно в срок" и многих других программ, связанных с компилятором.
Принимая во внимание, что /root/work/qt5_setup/qt-everywhere-src-5.10.0/configure --prefix = / root / work / qt5_setup / qt_install -opensource -confirm-license
с параметрами платформы по умолчанию (linux-g++ linux-g++-32) не нашел Desktop OpenGL
Удалить
config.cache
файл в каталоге Qt (тот самый, который содержит
configure
сценарий) и повторите попытку.