Los usuarios de Linux se encuentran a menudo con el error de carga de bibliotecas compartidas
al ejecutar programas, y también es familiar para muchos programadores y cualquiera que desee compilar software en su sistema. Literalmente significa que hay un problema al cargar bibliotecas compartidas.
El error"error al cargar
bibliotecascompartidas
" significa que al ejecutar un programa o script, el sistema operativo no pudo encontrar y cargar una o más bibliotecas que son necesarias para que este programa funcione. Se trata de un problema habitual en los sistemas operativos tipo UNIX. Cuando un programa se compila, puede hacer referencia a varias bibliotecas externas que deberían estar disponibles en tiempo de ejecución. Si estas bibliotecas faltan o no están disponibles, se produce un error al cargar las bibliotecas compartidas.
Aunque no compile sus programas, puede ver este error: directory_name: cannot open shared object file: No such file or directory
con bastante frecuencia al instalar nuevos programas no a través del gestor de paquetes o programas destinados a otra distribución. Ocurre porque el sistema no puede encontrar la biblioteca. ¿Por qué no se puede encontrar y cargar?
Varias razones, por lo general todo se reduce a una biblioteca que:
A la hora de solucionar el problema, nos guiaremos por estas razones e intentaremos solucionarlas.
A continuación, vamos a ver ejemplos concretos de solución de este problema basados en las razones mencionadas en el párrafo anterior.
No hay nada complicado aquí y todo está bastante claro - la biblioteca simplemente no está presente en el sistema, es por eso que obtenemos este error. Es por eso que tenemos que encontrar el paquete de la biblioteca con la ayuda de un gestor de paquetes e instalarlo. Normalmente, los paquetes con bibliotecas se llaman igual que las propias bibliotecas con el prefijo lib
.
Si nos falta la biblioteca libfuse2.so
, podemos encontrarla en Ubuntu con este comando:
$ sudo apt search libfuse2
Entonces lo único que nos queda por hacer es instalarla:
$ sudo apt install libfuse2
Cuando necesites compilar un programa desde el código fuente, también tendrás que instalar los archivos de cabecera:
$ sudo apt install libfuse-dev
Y así para cualquier librería. Pero esto no siempre funciona.
En la práctica, hay casos en los que la biblioteca está instalada, pero el error persiste y no permite a los usuarios interactuar normalmente con el sistema. ¿Qué hacer en tal caso? En primer lugar, compruebe si el gestor de arranque de Linux no encuentra la biblioteca. La búsqueda debe realizarse en los directorios especificados en los archivos de configuración /etc/ld.conf.d/
. Por regla general, éstos son /usr/lib, /lib, /usr/lib64, /lib64
. Si la biblioteca está instalada en un directorio diferente, es obvio que éste es el origen del problema.
Puede ver qué bibliotecas están actualmente disponibles para el cargador utilizando el comando:
$ ldconfig -p
Encuentre dónde se encuentra su biblioteca utilizando el comando locate
. Por ejemplo, estamos interesados en la librería librtfreader.so:
$ locate librtfreader
Cuando conocemos la ubicación de /opt/kingsoft/wps-office/office6/
, necesitamos hacer posible que el cargador detecte la biblioteca. Añadimos la ruta /etc/ld.so.conf.d/
al fichero de configuración o a la variable LD_LIBRARY_PATH
:
export LD_LIBRARY_PATH=/opt/kingsoft/wps-office/office6/
Puedes instalar con cualquier librería que invoque el error. También puede tomar la ruta menos complicada de crear un enlace simbólico a la biblioteca correcta en el directorio correcto:
ln -s /opt/kingsoft/wps-office/office6/librtfreader.so /usr/lib/librtfreader.so
Esto suele ocurrir cuando se utilizan programas para una distribución que no tiene instalada. Cada biblioteca tiene una versión adicional, que se escribe después de la extensión .so
. Por ejemplo, libav.so.1
. El número de versión cambia cada vez que se parchea una biblioteca.
A menudo ocurre que en una distribución un programa se construye con una dependencia de una biblioteca, como libc .so.1
, y en otra distribución sólo hay libc.so.2
. En la mayoría de los casos las diferencias son pequeñas y el programa podría funcionar con la segunda versión de la biblioteca. Así que podemos simplemente crear un enlace simbólico a ella.
Por ejemplo, no existe la librería libusb-1.0.so.1
. Pero existe libusb-1.0.so.0.1
, y podemos utilizarla:
Para ello, basta con crear un enlace simbólico a la biblioteca:
$ sudo ln -s /usr/lib/libusb-1.0.so.0.1 /usr/lib/libusb-1.0.so.1
A menudo el programa no notará la sustitución y funcionará. Como solución inteligente, intente encontrar en Internet la versión correcta de la biblioteca para su arquitectura y colóquela en la carpeta /usr/lib/
o /usr/lib64/
. Pero después es conveniente actualizar la caché:
$ sudo ldconfig
Si el problema persiste después de estos pasos, se recomienda consultar la documentación del programa o sistema operativo para obtener información más detallada sobre las versiones de biblioteca necesarias y cómo instalarlas.