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?


¿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

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

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.


2

escribir:

yum provides */libGL.so 

después de proporcionar:

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


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.


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.


-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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.