web-dev-qa-db-fra.com

Opengl pour Ubuntu14 (bâtiment QT 5.4)

J'ai une nouvelle installation de Ubuntu 14 LTS à partir de ce matin, j'utilise un PC avec Nvidia graphic cards et j'ai correctement installé la dernière version du pilote sur le site Web de Nvidia (NVIDIA-Linux-x86_64-352.30).

J'essaie de construire QT 5.4 (qt-partout-opensource-src-5.4.2) et je suis confronté à un problème avec le fait de ne pas pouvoir trouver opengl.

J'ai installé les packages suivants afin de résoudre toutes les dépendances:

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

et enfin:

Sudo apt-get install mesa-common-dev
Sudo apt-get install libglu1-mesa-dev

Autant que je sache, ce qui précède devrait complètement installer les paquets opengl pour Ubuntu.

J'essaie ensuite de configurer QT en utilisant la commande suivante:

./configure -v -confirm-license -developer-build -opensource -xinput2 -dbus -opengl desktop -nomake examples -nomake tests)

Je reçois l'erreur suivante:

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

Je cherche depuis un moment et je ne peux que supposer que tous les bons packages sont installés mais que quelque chose manque dans le chemin système. Que peut-il manquer et comment puis-je l'ajouter au chemin du système?

Le résultat suivant pourrait aider:

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
1
theAlse

C'est probablement le paquetage libgl1-mesa-dev.

1
Velkan

Nous avons rencontré le même problème sous Debian 8.5: le pilote Nvidia + toutes les bibliothèques recommandées dans Building Qt5 à partir de Git installé mais l’étape de configuration de Qt 5.9 a échoué car le support OpenGL manquait.

Extrait:

  • Qt configure les vérifications pour le support openGL en liant des choses à libGL.so - mais la lib est manquante
  • libGL.so est fourni par libgl1-mesa-glx qui ajoute un lien symbolique de libGL.so à libGL.so.x.y.z (dans mon cas libGL.so.1.2.0)
  • selon dpkg, libGL.so.1.2.0 fait également partie de libgl1-mesa-glx - mais il manque pour des "raisons"
  • la recherche d'autres versions de libGL.so indique qu'une version de bibliothèque est installée par le pilote Nvidia (/usr/lib/x86_64-linux-gnu/libGL.so.346.35)
  • l'ajout d'un lien symbolique à ce fichier a résolu le problème

    Sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.346.35 /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0
    
  • réexécutez configure en utilisant l'indicateur -recheck

Procédure pas à pas (peut également s'appliquer à des problèmes similaires):

$ ./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 est manquant, recherchez le fournisseur ...

$ 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

Donc, la bibliothèque libgl1-mesa-glx est installée mais le fichier libGL.so.1.2.0 est manquant dans le chemin. Recherchez d'autres fichiers 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

Le /usr/lib/x86_64-linux-gnu/libGL.so.346.35 est la seule bibliothèque openGL valide sur ma machine (installée par le programme d'installation du pilote Nvidia).

Solution:

Sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.346.35 /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0
1
Thomas Tannhäuser

La solution ci-dessous a échoué pour moi à un stade ultérieur, clang-c ++ n’ayant pas pu compiler correctement la source qt.

Les étapes suivantes détectent Desktop OpenGL sur le système 32 bits Mint 17.3 avec une carte Nvidia et des pilotes propriétaires. dans le fichier /root/work/qt5_setup/qt-everywhere-src-5.10.0/qtbase/mkspecs/common/linux.conf inclus dans /root/work/qt5_setup/qt-everywhere-src-5.10.0/qtbase /mkspecs/linux-g++/qmake.conf

les variables d'environnement doivent être définies sur:

QMAKE_INCDIR_OPENGL = "/ usr/include/GL" QMAKE_LIBDIR_OPENGL = "/ usr/lib /" QMAKE_INCDIR_OPENGL_ES2 = $$ QMAKE_INCDIR_OPENGL QMAKE_LIBDIR_OPENGL_ES2 = $$ QMAKE_LIBDIR

QMAKE_LIBS_OPENGL = -lGL QMAKE_LIBS_OPENGL_ES2 = -lGLESv2

La libGL a utilisé des points sur la bibliothèque fournie par le pilote Nvidia dans mon système. /usr/lib/libGL.so -> /usr/lib/i386-linux-gnu/libGLX_nvidia.so.390.48

Considérant que /usr/lib/i386-linux-gnu/libGL.so -> mesa/libGL.so à la bibliothèque fournie par Mesa3D.

Assurez-vous également que mesa-common-dev, libglu1-mesa-dev, libgl1-mesa-dev et les autres packages de développement OpenGL sont installés.

/root/work/qt5_setup/qt-everywhere-src-5.10.0/configure --prefix =/root/work/qt5_setup/qt_install -opensource -confirm-license -platform linux-g ++ && make -j 5

0
noel av

ce qui suit détecte Desktop OpenGL sur le système 32 bits Mint 17.3 avec une carte Nvidia et des pilotes propriétaires. /root/work/qt5_setup/qt-everywhere-src-5.10.0/configure --prefix =/root/work/qt5_setup/qt_install -opensource -confirm-license -platform linux-clang-libc ++

les options de plates-formes sont disponibles dans /root/work/qt5_setup/qt-everywhere-src-5.10.0/qtbase/mkspecs

Avant l'installation ci-dessus, clang (compilateur C, C++ et Objective-C (basé sur LLVM)) et libc ++ - dev (bibliothèque LLVM C++ Standard (fichiers de développement))

LLVM est un ensemble de bibliothèques et d’outils qui facilitent la création de compilateurs, d’optimiseurs, de générateurs de code juste à temps et de nombreux autres programmes liés aux compilateurs.

Considérant que /root/work/qt5_setup/qt-everywhere-src-5.10.0/configure --prefix =/root/work/qt5_setup/qt_install -opensource -confirm-license

avec les options de plate-forme par défaut (linux-g ++ linux-g ++ - 32) n'a pas trouvé Desktop OpenGL

0
noel av

J'ai eu le même problème sur Ubuntu 16.04 avec Qt 5.9. J'ai d'abord exécuté le configure quand le libgl1-mesa-dev et libglu1-mesa-dev n'étaient pas installés. Après cela, j'ai installé ces bibliothèques libgl *. Mais l'erreur "OpenGL introuvable" est restée. L'erreur a disparu après la suppression du répertoire non compressé actuel et le décompactage de l'archive.

0
Rinat Gadelshin