sistemas - mp3 tag linux
DistribuciĆ³n de Linux con compatibilidad binaria. (9)
¿Alguna forma de hacer un binario en una distribución de Linux y ejecutarlo en otra distribución con la misma arquitectura? ¿O debería compilarlo y construirlo en diferentes distribuciones?
¿Existe alguna compatibilidad entre las distribuciones basadas en Redhat y Debian para archivos binarios? (¡Quiero usar mi archivo binario de Ubuntu en fedora!)
¿En qué idioma está codificada tu aplicación? Si está en un lenguaje como Python, (y sin enlaces C) o Java o cualquier otro lenguaje basado en VM, entonces creo que puede confiar en la VM para asegurarse de que su aplicación funcionará en las diferentes distribuciones de Linux.
Además, existe la http://www.linuxfoundation.org/collaborate/workgroups/lsb que puede referirse.
HTH, Amit
Funciona. Pero también depende de la versión de las bibliotecas compartidas que utilice, incluidas libc, libstdc ++, que son forzadas por la versión del compilador que puede diferir de una distro a otra.
Ingrese Linux Standard Base para reducir las diferencias entre las distribuciones individuales de Linux. Ver
LSB definitivamente vale la pena echarle un vistazo. Aunque en lo que respecta al trabajo con bibliotecas, me sentí muy satisfecho con esta respuesta aquí en SO https://.com/questions/1209674/shipping-closed-source-application-for-linux/1242738#1242738 y este tratamiento detallado de mecanismo de ruta de acceso http://www.eyrie.org/~eagle/notes/rpath.html
La mejor manera es distribuir el código fuente y facilitar la creación de la fuente en cualquier distribución de Linux razonable. Esto es mejor que la distribución binaria porque no es suficiente para que el binario sea compatible con las bibliotecas compartidas. También debe asegurarse de adaptar su programa a cosas como ubicaciones y convenciones de distribución especificadas para dónde van las aplicaciones web, cómo se envía el correo electrónico, cómo se inician los servicios o cómo determinar el tamaño de papel predeterminado, o una gran cantidad de ellos. de otros detalles.
Consulte, por ejemplo, el Manual de políticas de Debian para un documento que describe muchas de las cosas que necesita una distribución para decidir garantizar la compatibilidad entre las aplicaciones que se ejecutan en ella. No es necesario que lo lea o lo aprenda de memoria, pero muestra el alcance de los problemas que pueden hacerle tropezar.
Probablemente debería trabajar junto con varias de las principales distribuciones para asegurarse de que su aplicación funcione bien con todas ellas. La mayoría de los desarrolladores de distribuciones te ayudarán con mucho gusto si te acercas a ellos educadamente Si tiene suerte, puede atraer voluntarios de las distribuciones para hacer el paquete binario para usted, y eso le dará una respuesta rápida sobre lo que necesita cambiar en el nivel de origen para que su aplicación sea fácil de empaquetar.
La http://www.linuxfoundation.org/collaborate/workgroups/lsb ya mencionada por otros intentan encontrar una solución de distribución cruzada para estas variables, pero no es completa y no está totalmente soportada por la mayoría de las distribuciones. Sin embargo, la mayoría de las distribuciones lo consideran un problema si rompen accidentalmente la compatibilidad LSB.
La vinculación estática de sus binarios los convierte en MENOS portátiles porque algunas bibliotecas no funcionarán correctamente para esa máquina (diferentes métodos de autenticación, etc.).
Si vincula estáticamente cualquier biblioteca "inusual" y mantiene su conjunto de distribuciones compatibles al mínimo, debería estar bien.
No vincule estáticamente la biblioteca de C (o todo el binario), eso es una receta para los problemas :)
Mira lo que (por ejemplo) hace Google con Chrome.
Me doy cuenta de que esta es una pregunta muy antigua, pero aparece en los resultados de búsqueda y esto no se ha mencionado:
CDE es una herramienta para crear aplicaciones portátiles de Linux . Esta herramienta agrupa todos los archivos necesarios (incluidas las bibliotecas) mediante análisis en tiempo de ejecución. Lo he usado con éxito en herramientas de línea de comandos varias veces, un ejemplo es hacer que tcpdump se ejecute en un antiguo dispositivo de hardware que ejecuta una distribución personalizada. CDE tampoco requiere fuente, solo empaqueta un ejecutable que puede ejecutar.
En un momento dado, tuve un error al ejecutar el comando cde
que se corrigió antes de completar el comando con LD_ASSUME_KERNEL=2.4.1
, esto podría no ser necesario en las versiones recientes como hace años.
El código también está en GitHub: https://github.com/pgbovine/CDE
Normalmente, está bien utilizar binarios en las distribuciones de Linux siempre que tenga el mismo conjunto de bibliotecas disponibles. Puede usar ''ldd'' para verificar qué bibliotecas necesita un binario. libc debería tener la misma versión en las distribuciones involucradas.
Podría vincular estáticamente sus ejecutables para la portabilidad.