Estoy tratando de ejecutar un exe que usa libudev.so pero da este error:
error al cargar bibliotecas compartidas: libudev.so.0: no se puede abrir el archivo de objeto compartido: no existe tal archivo o directorio
Ejecutar uname -a da:
3.5.0-44-generic #67~precise1-Ubuntu SMP miércoles 13 de noviembre 16:16:57 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Estoy usando Ubuntu 12.04
Revisé /lib /lib32 /lib64 , no hay libudev allí, pero en Synaptic Manager puedo ver libudev0 instalado (vea la imagen a continuación)
y pude encontrarlo en /lib/x86_64-linux-gnu/libudev.so.0 .
¿Qué podría estar mal?
Resulta (como sospechaba) que intentó ejecutar un ejecutable de 32 bits en un sistema de 64 bits. El kernel de Linux de 64 bits es capaz de ejecutar ejecutables de 32 bits (es por eso que no aparece el "error de formato exec"), pero necesita un conjunto separado de bibliotecas (de 32 bits): versión de 64 bits de libudev.so.0 es inútil para un programa de 32 bits. (Consulte la página de manual de ld.so para obtener algunos detalles sobre la resolución de dependencias de bibliotecas compartidas).
Las distribuciones modernas basadas en Debian admiten la instalación simultánea de bibliotecas para varias arquitecturas. apt-get install libudev0:i386 debería obtener una versión de 32 bits de la biblioteca y todas sus dependencias (puede haber muchas si es la primera vez que usa una aplicación de 32 bits). Si actualizó desde una instalación antigua, es posible que deba agregar i386 a las arquitecturas compatibles con dpkg , como esta:
dpkg --add-architecture i386Algunos consejos para usar si el programa también necesita otras bibliotecas:
apt-file update , para que pueda buscar un nombre de paquete por un nombre de archivo, incluso si el paquete no está instalado actualmente (como este: apt-file search /libudev.so.0 ) También había una forma antigua de Debian de obtener bibliotecas de 32 bits en un sistema de 64 bits: el paquete ia32-libs en los repositorios amd64 proporcionaba un conjunto de bibliotecas, conceptualmente "todo lo que su aplicación podría necesitar". No use este enfoque a menos que esté ejecutando Debian squeeze o anterior (o una distribución basada en Debian de la misma edad). Incluso cuando funcionó, no había garantía de que el programa no necesitara también otra biblioteca. Ia32-libs fue útil cuando el soporte multiarquitectura aún no estaba listo, y eso fue hace algunos años.
Acabo de seguir estas instrucciones y funciona bien.
https://askubuntu.com/questions/369310/how-to-fix-missing-libudev-so-0-for-chrome-to-start-again
sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1.3.5 /usr/lib/libudev.so.0Intenta crear un enlace simbólico:
sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0