Qt: impossible de trouver l'erreur -lGL

109

Je viens de réinstaller QtCreator, j'ai créé un nouveau projet ( Qt Application ) et j'ai obtenu ceci après la compilation:

/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'

(Le projet est vide, je n'ai commis aucun changement )

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

Comment résoudre ce problème?

Hofmn
la source

Réponses:

157

Vous devez installer le paquet "libgl1-mesa-dev":

sudo apt install libgl1-mesa-dev
Sayyed Hassan Amiri
la source
6
Comment est-ce la bonne réponse? Pourquoi devriez-vous établir un lien avec une bibliothèque non utilisée? Les indicateurs de l'éditeur de liens ne devraient-ils tout simplement pas inclure -lGL?
Cuadue
6
@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 Qt - mais une fois qu'ils ont installé la bibliothèque de développement OpenGL, ils ne la revoient jamais.
pixelgrease
Ubuntu 20.04 est livré avec les bibliothèques OpenGL requises, il n'est pas nécessaire d'installer de paquet, il vous suffit de l'utiliser lnpour créer un lien dans / usr / lib, voir la réponse de destan , le paquet 20.04 ne semble pas contenir d'utile.
jrh
75

vous n'avez rien à installer. libGLest déjà installé avec Ubuntu, il vous suffit de le lier de manière souple. (testé pour ubuntu 14.x et 15.x, peut fonctionner pour les versions ultérieures)

  1. Localisez d'abord la bibliothèque GL
  2. Puis liez-le sous / usr / lib
  3. Si la bibliothèque est manquante, elle peut être installée via le package libgl1-mesa-dev

Voici comment procéder:

$ 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
destan
la source
1
Oui, cela fonctionne. C'est généralement une bonne idée d'exécuter ldconfigaprès avoir traité des bibliothèques partagées comme dans ce cas.
José Tomás Tocino
Merci d'avoir répondu! Sur mon système, j'avais plusieurs libGL à cause d'Android sdk, steam et d'autres applications. Le dossier mesa d'origine était également présent dans le i386-linux-gnudossier. Pour toute personne lisant 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 en modifiant la dernière sudo lncommande mentionnée dans cette réponse avec le bon emplacement.
Akash Agarwal
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 le rendu as / w?
DavidJ
Cette réponse ne semble pas résoudre la question de pkg-config, n'est-ce pas? IE: si vous avez configuré des lignes de construction qt pour utiliser pkg-config --libs, cette solution ne retournera toujours rien pour GL? Pour être sûr, j'ai simplement installé le mesa-dev.
Alex Summers
3
Vous, monsieur, méritez le cookie, pas l'escroc qui était la grosse tique
djangodude
3

Le module gui Qt est inclus par défaut . Si vous ne souhaitez pas l'utiliser dans un projet (par exemple, il s'agit d'une bibliothèque ou n'utilise que stdio), vous devez le spécifier dans le fichier .pro.

QT -= gui

Et l'éditeur de liens ne tentera pas de trouver lGL, qu'il soit installé ou non.

Mon cas est certes un peu étrange, car la principale raison d'utiliser Qt est de créer des interfaces graphiques. L'installation de la bibliothèque GL n'est certainement pas difficile, je voulais juste savoir pourquoi mon rapide et sale Hello World le voulait.

raclette
la source
2

écrire:

yum provides */libGL.so 

après avoir fourni:

yum install mesa-libGL-devel mesa-libGLU-devel
Shojib Mahmud
la source
2

Cela a fonctionné pour moi:

sudo ln -s /usr/lib/libEGL1.so /usr/lib/libGL.so
Sebastian Karlsson
la source
1

Mon système est Ubuntu 16.04 sur un ordinateur x86 (avec GPU NVIDIA GeForce).

Vérifiez les fichiers de bibliothèque situés dans /usr/lib/x86_64-linux-gnu

ls -al /usr/lib/x86_64-linux-gnu/libG*

Si vous voyez le lien rompu, réinstallez libgl1-mesa-glx

sudo apt install --reinstall libgl1-mesa-glx

Et revérifiez la bibliothèque.

Lastea
la source
0

Dans mon cas: j'ai installé la lib QT 32 bits dans Win10 64 bits et cela a rencontré une erreur, je passe à tous les 64 bits et le créateur QT fonctionne correctement.

nobjta_9x_tq
la source
-1

Résolu ce problème il y a à peine une minute dans suse. Faites simplement l'étape suivante ci-dessous et QTCreator devrait fonctionner correctement.

sudo zypper install --type pattern devel_basis

Suomynona anonyme
la source