Im tratando de compilar un binario de un proyecto de código abierto para que nuestros usuarios no tengan que compilarlo ellos mismos.Crear un binario genérico en linux para todas las máquinas x86
Me he dado cuenta de que algunos binarios creados en una máquina ubuntu de 32 bits "A" no funcionan en la máquina "B" de 32 bits, y se informa de errores en archivos .so faltantes.
Sin embargo, si compilo desde cero en la máquina "B", todos los errores desaparecen.
¿Podría haber algún motivo por el que compilar el código en la máquina de destino haga que estos errores desaparezcan? Solo ejecuté "./configure" y "make" - no "make-install", así que no es como si hubiera hecho que estos archivos .so estuvieran disponibles globalmente.
¿Podría ser que el compilador detecte que hay .so archivos que faltan de la biblioteca del sistema y en este caso vincula una biblioteca estática en el ejecutable?
¿Cómo compila Ubuntu sus paquetes para que un paquete i386 se ejecute en todas las máquinas x86?
Eso es correcto, pero no retroceda demasiado. La compilación de un binario en RHEL 4 probablemente no funcionará en ninguna distribución moderna. Al menos la libc es el determinante principal, a menudo está bloqueado a una versión menor específica. – Keith
PD. Esta es también la razón por la cual algunas aplicaciones comerciales se envían con conjuntos completos de librerías por sí mismas, y usan LD_LIBRARY_PATH para garantizar que se usen en lugar de las del sistema. Otra opción es la vinculación estática. Para herramientas pequeñas que funciona bien. – Keith