Qt: impossibile trovare l'errore -lGL


109

Ho appena reinstallato QtCreator, creato un nuovo progetto ( Qt Application ) e ottenuto questo dopo la compilazione:

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

(Il progetto è vuoto, non ho apportato modifiche )

Qt Creator 2.7.2
Basato su Qt 5.1.0 (32 bit)
Ubuntu 13.04

Come risolvo questo problema?


hai installato opengl?
lpapp


Risposte:


157

Dovresti installare il pacchetto "libgl1-mesa-dev":

sudo apt install libgl1-mesa-dev

6
Come è questa la risposta corretta? Perché dovresti collegarti a una libreria non utilizzata? I flag del linker non dovrebbero semplicemente non includere -lGL?
Cuadue

6
@Cuadue: Il GL nell'errore e in libgl1 -... è per OpenGL, una dipendenza fondamentale di Qt 5.x. Questo è un errore comune per gli sviluppatori durante la configurazione per lo sviluppo di Qt, ma una volta installata la libreria di sviluppo OpenGL non la vedono più.
pixelgrease

Ubuntu 20.04 viene fornito con le librerie OpenGL richieste, non è necessario installare alcun pacchetto, è sufficiente utilizzarlo lnper creare un collegamento in / usr / lib, vedere la risposta di destan , il pacchetto 20.04 non sembra contenere nulla di utile.
jrh

75

non è necessario installare nulla. libGLè già installato con Ubuntu, devi solo collegarlo in modo soft. (testato per ubuntu 14.x e 15.x, potrebbe funzionare per le versioni successive)

  1. Per prima cosa individuare la libreria GL
  2. Quindi collegalo in / usr / lib
  3. Se la libreria è mancante, può essere installata tramite il pacchetto libgl1-mesa-dev

Ecco come potresti farlo:

$ 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

1
Sì, funziona. Di solito è una buona idea eseguire ldconfigdopo aver gestito le librerie condivise come in questo caso.
José Tomás Tocino

Grazie per la risposta! Sul mio sistema avevo più libGL a causa di Android SDK, Steam e altre applicazioni. La cartella mesa originale era presente anche nella i386-linux-gnucartella. Per chiunque legga questa risposta, è possibile individuare facilmente la libreria installata predefinita in Ubuntu eseguendo locate libGL | grep mesae quindi modificare l'ultimo sudo lncomando menzionato in questa risposta con la posizione corretta.
Akash Agarwal

1
Questo ha funzionato per me su Ubuntu 16.10, ma sono confuso se ora utilizza la GPU NVidia per il rendering OpenGL o come renderer / w?
DavidJ

Questa risposta non sembra risolvere la domanda di pkg-config, vero? IE: se hai qt build linee impostate per usare pkg-config --libs, questa soluzione non restituirà ancora nulla per GL? Per andare sul sicuro, ho semplicemente installato mesa-dev.
Alex Summers

3
Voi signore, meritate il biscotto non il truffatore che era il grande segno di spunta
djangodude

3

Il modulo gui Qt è incluso per impostazione predefinita . Se non vuoi usarlo in un progetto (ad esempio, è una libreria o usa solo stdio), devi specificarlo nel file .pro.

QT -= gui

E il linker non tenterà di trovare lGL indipendentemente dal fatto che sia installato.

Il mio caso è certamente un po 'strano, dal momento che il motivo principale per utilizzare Qt è creare gui. Installare la libreria GL non è certo difficile, volevo solo sapere perché il mio veloce e sporco Hello World lo voleva.


2

Scrivi:

yum provides */libGL.so 

dopo aver fornito:

yum install mesa-libGL-devel mesa-libGLU-devel


1

Il mio sistema è Ubuntu 16.04 su computer x86 (con GPU NVIDIA GeForce).

Controlla i file della libreria che si trovano in /usr/lib/x86_64-linux-gnu

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

Se vedi il collegamento interrotto, reinstallalo libgl1-mesa-glx

sudo apt install --reinstall libgl1-mesa-glx

E ricontrolla la libreria.


0

Nel mio caso: ho installato QT 32 bit lib in Win10 64 bit e si è verificato un errore, cambio a 64 bit e QT Creator funziona senza problemi.


-1

Risolto questo problema solo un minuto fa in suse. Esegui semplicemente il passaggio seguente e QTCreator dovrebbe funzionare perfettamente.

sudo zypper install --type pattern devel_basis

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.