2013-08-23 8 views
61

Je viens de réinstaller QtCreator, nouveau projet créé (Application Qt) un a obtenu ce après la compilation:Qt: ne peut pas trouver l'erreur -lGL

/usr/bin/ld: **cannot find -lGL** 
collect2: error: ld returned 1 exit status 
make: *** [untitled1] Error 1 
18:07:41: The process "/usr/bin/make" exited with code 2. 
Error while building/deploying project untitled1 (kit: Desktop Qt 5.1.0 GCC 32bit) 
When executing step 'Make' 

(projet est vide, je did'n commets tout changement)

Qt Creator 2.7.2
Basé sur Qt 5.1.0 (32 bits)
Ubuntu 13.04

Comment résoudre ce problème?

+0

Avez-vous installé opengl? – lpapp

+0

duplication possible de [Android: erreur libGL.so: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type] (http://stackoverflow.com/questions/17417211/android-error-libgl-so-cannot-open-shared -object-file-no-such-file-or-direct) – lpapp

+1

Possible duplication de [problème du compilateur Qt Creator sur Debian] (http://stackoverflow.com/questions/33254272/qt-creator-compiler-issue-on- debian) –

Répondre

94

Installer le paquet "libgl1-mesa-dev":

sudo apt-get install libgl1-mesa-dev 
+2

Comment est-ce la bonne réponse? Pourquoi devriez-vous lier contre une bibliothèque non utilisée? Les indicateurs de liens ne doivent-ils pas simplement inclure '-lGL'? – Cuadue

+3

@Cuadue: Le GL dans l'erreur et dans libgl1 -... est pour OpenGL, une dépendance fondamentale de Qt 5.x. C'est une erreur courante pour les développeurs lors de la configuration pour le développement de Qt - mais une fois qu'ils ont installé la bibliothèque de développement OpenGL, ils ne la voient plus jamais. – pixelgrease

+1

Vous devriez utiliser apt maintenant – jv110

43

vous n'avez pas besoin d'installer quoi que ce soit. libGL est déjà installé avec Ubuntu, il vous suffit de le lier. (Testé pour 14.x et 15.x ubuntu, pourrait fonctionner pour les versions ultérieures)

  1. d'abord localiser la bibliothèque GL
  2. redirigent ensuite sous/usr/lib
  3. Si la bibliothèque est manquante, il peut être installé via paquet libgl1-mesa-dev

Voici comment vous pouvez le faire:

$ locate libGL 
/usr/lib/i386-linux-gnu/mesa/libGL.so.1 
/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0 
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.10 
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.10.0 
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10 
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10.0 
/usr/lib/x86_64-linux-gnu/libGLU.so.1 
/usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1 
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 
/usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2 
/usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2.0.0 
$ sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/libGL.so 
+0

Oui, cela fonctionne. C'est généralement une bonne idée d'exécuter 'ldconfig' après avoir traité des bibliothèques partagées comme dans ce cas. –

+0

Merci pour la réponse! Sur mon système, j'ai eu plusieurs libGL à cause de Android sdk, de la vapeur et d'autres applications. Le dossier Mesa d'origine était également présent dans le dossier 'i386-linux-gnu'. Pour quiconque lit cette réponse, vous pouvez facilement localiser la bibliothèque installée par défaut dans Ubuntu en exécutant 'locate libGL | grep mesa' puis modifiez la dernière commande 'sudo ln' mentionnée dans cette réponse avec le bon emplacement. –

+1

Cela a fonctionné pour moi sur Ubuntu 16.10, mais je suis confus s'il utilise maintenant le GPU NVidia pour le rendu OpenGL, ou un moteur de rendu s/w? – DavidJ

-1

résolu ce problème une minute un aller à suse. Faites simplement l'étape suivante ci-dessous et QTCreator devrait fonctionner correctement.

sudo zypper installer --type modèle devel_basis

Questions connexes