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.