Qt: no se puede encontrar el error -lGL

109

Acabo de reinstalar QtCreator, creé un nuevo proyecto ( Aplicación Qt ) y obtuve esto después de la compilación:

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

(El proyecto está vacío, no realicé ningún cambio )

Qt Creator 2.7.2
Basado en Qt 5.1.0 (32 bits)
Ubuntu 13.04

¿Cómo soluciono este problema?

Hofmn
fuente
¿tienes opengl instalado?
lpapp
1
Posible duplicado del problema del compilador

Respuestas:

157

Debe instalar el paquete "libgl1-mesa-dev":

sudo apt install libgl1-mesa-dev
Sayyed Hassan Amiri
fuente
6
¿Cómo es esta la respuesta correcta? ¿Por qué debería vincular contra una biblioteca que no se está utilizando? ¿No deberían simplemente no incluirse las banderas del enlazador -lGL?
Cuadue
6
@Cuadue: El GL en el error y en libgl1 -... es para OpenGL, una dependencia fundamental de Qt 5.x. Este es un error común para los desarrolladores cuando se configuran para el desarrollo de Qt, pero una vez que instalan la biblioteca de desarrollo de OpenGL, nunca la vuelven a ver.
pixelgrease
Ubuntu 20.04 se envía con las bibliotecas OpenGL requeridas, no es necesario instalar ningún paquete, solo necesita usarlo lnpara crear un enlace en / usr / lib, vea la respuesta de destan , el paquete 20.04 no parece tener nada útil.
jrh
75

no es necesario instalar nada. libGLya está instalado con Ubuntu, solo necesita vincularlo. (probado para ubuntu 14.xy 15.x, podría funcionar para versiones posteriores)

  1. Primero localice la biblioteca GL
  2. Luego, vincúlelo en / usr / lib
  3. Si falta la biblioteca, se puede instalar a través del paquete libgl1-mesa-dev

Así es como puedes hacer esto:

$ 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
fuente
1
Sí, esto funciona. Por lo general, es una buena idea ejecutar ldconfigdespués de tratar con bibliotecas compartidas como en este caso.
José Tomás Tocino
¡Gracias por la respuesta! En mi sistema tenía varios libGL debido a Android sdk, steam y otras aplicaciones. La carpeta mesa original también estaba presente en la i386-linux-gnucarpeta. Para cualquiera que lea esta respuesta, puede ubicar fácilmente la biblioteca instalada predeterminada en Ubuntu ejecutando locate libGL | grep mesay luego alterar el último sudo lncomando mencionado en esta respuesta con la ubicación correcta.
Akash Agarwal
1
Esto funcionó para mí en Ubuntu 16.10, pero estoy confundido si ahora está usando la GPU NVidia para el renderizado OpenGL, o como renderizador / w.
DavidJ
Esta respuesta no parece resolver la pregunta de pkg-config, ¿verdad? IE: si tiene qt build lines configuradas para usar pkg-config --libs, ¿esta solución aún no devolverá nada para GL? Para estar seguro, simplemente instalé mesa-dev.
Alex Summers
3
Usted, señor, se merece la galleta, no el estafador que era el gran tick
djangodude
3

El módulo gui Qt se incluye de forma predeterminada . Si no desea usarlo en un proyecto (por ejemplo, es una biblioteca o solo usa stdio), debe especificarlo en el archivo .pro.

QT -= gui

Y el vinculador no intentará encontrar lGL independientemente de si está instalado.

Mi caso es ciertamente un poco extraño, ya que la razón principal para usar Qt es crear interfaces gráficas. Instalar la biblioteca GL ciertamente no es difícil, solo quería saber por qué mi rápido y sucio Hello World lo quería.

exprimir
fuente
2

escribir:

yum provides */libGL.so 

después de proporcionar:

yum install mesa-libGL-devel mesa-libGLU-devel
Shojib Mahmud
fuente
2

Esto funcionó para mí:

sudo ln -s /usr/lib/libEGL1.so /usr/lib/libGL.so
Sebastián Karlsson
fuente
1

Mi sistema es Ubuntu 16.04 en una computadora x86 (con NVIDIA GeForce GPU).

Verifique los archivos de la biblioteca ubicados en /usr/lib/x86_64-linux-gnu

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

Si ve el enlace roto, reinstale libgl1-mesa-glx

sudo apt install --reinstall libgl1-mesa-glx

Y vuelva a comprobar la biblioteca.

Lastea
fuente
0

En mi caso: instalé QT 32 bit lib en Win10 64 bit y se produjo un error, cambio a 64 bit y QT creator se ejecuta sin problemas.

nobjta_9x_tq
fuente
-1

Resolvió este problema hace solo un minuto en suse. Simplemente realice el siguiente paso a continuación y QTCreator debería funcionar bien.

sudo zypper install --type pattern devel_basis

Suomynona anónimo
fuente