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 ответов

Это, вероятно, libgl1-mesa-dev пакет.

Столкнулся с той же проблемой в 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сценарий) и повторите попытку.

Другие вопросы по тегам