Error al cargar libGL.so.1

48

Al intentar ejecutar varias piezas de software (especialmente Steam y Yenka), me encontré con un error similar a este: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory

Estoy ejecutando un sistema de 64 bits, con una tarjeta NVidia Optimus (inicio dual para cierto software de Windows que requiere una tarjeta gráfica dedicada). Tengo instalado Bumblebee y estoy usando el controlador nvidia-current, en lugar del que descargué de NVidia, como se recomienda.

La biblioteca (libGL.so.1) no está presente en el directorio superior de /usr/lib, sin embargo, está presente /usr/lib32/nvidia-currentcomo un enlace suave a /usr/lib32/nvidia-current/libGL.so.304.64.

Una sección de la salida de ldconfig -p:

libGL.so.1 (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/libGL.so
libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so

Obviamente, se está cargando una biblioteca con ese nombre, pero se encuentran en ella /usr/lib/x86_64-linux-gnu, sin embargo, el software instalado no parece poder "verla". Para Steam, ejecutarlo con optirun hace que funcione, pero este no es el caso de Yenka. Supongo que optirun hace que se use la biblioteca almacenada /usr/lib32/nvidia-current, lo que permite que Steam se ejecute, por lo que no puedo entender por qué Yenka no se ejecutará.

¿Alguien puede explicar por qué el software no puede ver la biblioteca de mesa normal y por qué Yenka se niega a ejecutar con la biblioteca nvidia-current?

p0llard
fuente

Respuestas:

40

Con los controladores de nvidia instalados, skype busca una libra i386 provista por el paquete nvidia. Como eso no existe, está bien usar el i386 libGL.so.1 provisto por mesa.

Probado en (ubuntu-gnome raring, usando nvidia-325) y (ubuntu-gnome saucy, usando nvidia-319) pudimos solucionar esto de la siguiente manera:

update-alternatives --display i386-linux-gnu_gl_conf

Esto le mostrará cuáles son las opciones disponibles.

i386-linux-gnu_gl_conf - auto mode
  link currently points to /usr/lib/nvidia-325/alt_ld.so.conf
/usr/lib/i386-linux-gnu/mesa/ld.so.conf - priority 500
  slave i386-linux-gnu_xorg_extra_modules: /usr/lib/i386-linux-gnu/xorg/x11-extra-modules
/usr/lib/nvidia-325/alt_ld.so.conf - priority 8602
Current 'best' version is '/usr/lib/nvidia-325/alt_ld.so.conf'

entonces, haga lo siguiente:

sudo update-alternatives --config i386-linux-gnu_gl_conf

luego seleccione la mejor alternativa (seleccioné i386-linux-gnu / mesa / ld.so.conf): en la salida a continuación hay dos opciones para la alternativa i386-linux-gnu_gl_conf (proporcionando /etc/ld.so.conf. d / i386-linux-gnu_GL.conf).

  Selection    Path                                     Priority   Status
------------------------------------------------------------
* 0            /usr/lib/nvidia-325/alt_ld.so.conf        8602      auto mode
  1            /usr/lib/i386-linux-gnu/mesa/ld.so.conf   500       manual mode
  2            /usr/lib/nvidia-325/alt_ld.so.conf        8602      manual mode

Press enter to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/lib/i386-linux-gnu/mesa/ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode

Después de completar eso, intente ejecutar:

sudo ldconfig

y luego has terminado.

Euritmia
fuente
2
Tenía exactamente lo mismo y esto funcionó perfectamente, muchas gracias (Ubuntu 13.10)
Xtremesupremacy3
molesto: solo tengo la opción ld.so.conf, así que obtén "Solo hay una alternativa en el grupo de enlaces i386-linux-gnu_gl_conf (proporcionando /etc/ld.so.conf.d/i386-linux-gnu_GL.conf) : /usr/lib/i386-linux-gnu/mesa/ld.so.conf. Nada que configurar ".
dez93_2000
¿Qué paquetes de nvidia tienes instalados? ¿Tiene instalado libgl1-mesa-glx? En trust libgl1-mesa-glx: i386 proporciona /usr/lib/i386-linux-gnu/mesa/ld.so.conf (y las bibliotecas asociadas libGL.so.1 *.
eurythmia
Gran respuesta. Que estaba recibiendo errores al ejecutar un programa Qt después de cambiar al controlador de Nvidia - QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linkedy [xcb] This is most likely caused by a broken X extension library- y después de esto la sacó hacia arriba.
Matthew leyó el
Gracias. Funciona en 14.04 también. Esto no va a afectar a ningún otro programa. Lo hará? Como arreglar una cosa rompe otras 10.
Sudhir Khanger,
51

Tengo el mismo problema después de instalar Skype ... así que puedes hacer cualquier cosa para solucionar este error ...

El primero es ejecutar la aplicación siguiendo el comando ... por ejemplo, estoy ejecutando Skype.

LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1 skype

FUENTE

Segundo que lo que hice

sudo nano /etc/ld.so.conf.d/skype.conf

y agregue la siguiente línea en él

/usr/lib/i386-linux-gnu/mesa/

guardar la salida

y finalmente correr

sudo ldconfig -v

Espero que esto solucione su error libGL.so.1 como lo hizo con el mío

También puedes encontrar libGL.so.1

   find / -name libGL.so.1
Qasim
fuente
Me las arreglé para arreglarlo al final. Desafortunadamente, no recuerdo cómo, pero recuerdo que consistía en crear enlaces simbólicos aleatorios a la biblioteca, ejecutar mucho ldconfig y luego eliminar los enlaces simbólicos mencionados anteriormente. Todo funciona bien ahora.
p0llard
Esto funcionó bien! ¡Finalmente! Además, recuerdo haber hecho lo que @ jdp407 dijo antes de estos pasos.
Gundars Mēness
1
Si bien esta solución es buena, solo maneja las aplicaciones de una en una. Si tiene otras aplicaciones de 32 bits que requieren un libGL.so, deberá repetir el proceso para esas aplicaciones. Es mejor establecer esta preferencia a nivel mundial utilizando alternativas de actualización
euritmia
@eurythmia También puede copiarlo en / lib y ejecutar sudo ldconfig y tendrá acceso global
Qasim
lamentablemente no me funciona en xubuntu, "ERROR: ld.so: object '/usr/lib/i386-linux-gnu/mesa/libGL.so.1' de LD_PRELOAD no se puede precargar (no se puede abrir el archivo de objeto compartido) : ignorado "; skype.conf está en etc / dbus-1 / system.d no /ld.so.conf.d/ y parece ser un archivo diferente ...
dez93_2000
12

Las soluciones aquí funcionarán, pero hay una más simple.

Si skypeno funciona pero optirun skypefunciona, puede solucionarlo con:

sudo apt-get install bumblebee-nvidia --reinstall

(Las personas que usan Bumblebee con tarjetas AMD pueden necesitar una reinstalación equivalente).

Bumblebee causa y soluciona este problema, pero la solución que aplica se produce después de la instalación, cuando hace que las bibliotecas libGL estén disponibles para la tarjeta integrada, así como para la tarjeta más potente. Esto no sucederá si esas bibliotecas aún no estaban instaladas cuando instaló Bumblebee, por lo que necesita una reinstalación. Tampoco debería afectar la configuración de su abejorro, aunque obviamente vale la pena verificarlo después de haber hecho esto.

Jon Hanna
fuente
3
me funciona bien ... gracias. Ubuntu gnome 14.04
aditia
1
¡Definitivamente la solución más fácil! Sabía que tenía algo que ver con el orden de instalación, ya que reinstalé mi sistema dos veces recientemente (Ubuntu 14.04 64bit + tarjeta gráfica Nvidia Optimus). La primera vez que instalé Skype y luego Bumblebee, en cuyo caso no tuve problemas. La segunda vez que instalé Bumblebee y luego Skype y surgió este problema. ¡Simplemente reinstalar bumblebee-nvidia como se muestra en esta respuesta resolvió el problema!
Sicco
Me inclino a aceptar que esto parece una mejor solución que la mía.
Euritmia
2

Edite la entrada del escritorio:

sudo nano /usr/share/applications/skype.desktop

Cambie el Exec a:

Exec=env PULSE_LATENCY_MSEC=60 LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1 skype %U

Esto corre:

LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1

antes de ejecutar Skype cuando lo inicias con la entrada del iniciador / escritorio.

Debería funcionar bien después de eso siempre que lo inicie utilizando el iniciador de aplicaciones.

materiales peligrosos
fuente
El archivo libGL.so.1puede no estar en esa ruta (no era para mí, en Debian 8 / Jessie). Para encontrar el camino que hay que poner en LD_PRELOADsimplemente encontrar el archivo i386 en su sistema: sudo find / -name libGL.so.1 2>/dev/null. Lo encontré /usr/lib/mesa-diverted/i386-linux-gnu/libGL.so.1y funcionó bien usando eso como LD_PRELOAD.
f.ardelian
1

No estoy seguro de si esto ayudará a aclarar o no, pero tuve el mismo problema con skype y libGL.so.1. También ejecuta 13.04 con una tarjeta optimus y abejorro.

Tengo el problema ejecutando skype sin optirun, pero funcionó bien con. Acabo de cambiar el archivo de escritorio para que se ejecute con optirun cada vez y listo. ¡fijo!


fuente
No está realmente solucionado, ya que ahora estás usando la tarjeta más codiciosa de energía para Skype. De hecho, si está usando el puente VirtualGL en lugar de Primus, esencialmente va a quemar tanta energía como si no tuviera instalado abejorro y solo usara la tarjeta nvidia todo el tiempo.
Jon Hanna
1

Tuve un problema similar y lo resolví instalando bibliotecas de 32 bits en mi sistema de 64 bits: apt-get install ia32-libs

Mate
fuente
0

Descargue la última versión de la página oficial de Steam, luego deje que descargue lo que necesita del terminal (si es necesario). que agregar abejorro ppa si aún no lo hizo.

sudo add-apt-repository ppa:bumblebee/stable

actualízalo con este comando:

sudo apt-get update

e instalar virtualgl(eso resolvió el libgl.so.1error para mí en Steam)

sudo apt-get install virtualgl
Addae Dans
fuente
0

Tratar:

sudo apt-get install libgl1-mesa-glx-lts-utopic:i386
Burro
fuente