[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Dudas generales acerca de progracion en linux.



El Lunes, 11 de abril de 2016 21:50:39 Ala de Dragón escribió:
> Hola :D
> 
> Ando un par de días preguntándome acerca de unas dudas en cuanto a compilar.
> 
> Supongamos que tengo un sistema, llamémosle debian 7, que tendrá lo
> necesario para compilar un programa. Por ejemplo firefox.
> Si lo compilo desde las fuentes lo hago con las versiones de lasa
> librerías y programas que están instaladas en mi computadora. Con lo
> que en un debian 8 no funcionara bien.
> entonces, ¿como se hace para compilar un programa, empaquetarlo en un
> tar y hacer que funcione en cualquier debian?
> Es simple curiosidad
> 
> Salu2s
> 
> :)

Como ya te han respondido, eso es poco menos que imposible. Las combinaciones 
de ( librerias + programas + archivos auxiliares  ) son demasiadas.

Si quieres ALGO mas de portabilidad, puedes utilizar un lenguaje interpretado, 
como perl o incluso bash, que te darán algo más de juego. En Debian, python 
puede no estar instalado, pero bash y perl lo están siempre, porque el propio 
sistema de paquetes de Debian los usa.

Hay (o hubo) intentos de crear aplicaciones auto-empaquetadas, tipo archivo 
.ISO, y que el kernel ejecuta con ayuda de binfmt. Registras el controlador 
adecuado, y puedes empaquetar lo que quieras y lanzarlo como quieras.

También puedes utilizar aplicaciones auto-descomprimibles; son scripts de Bash 
que tienen 'embebido' un archivo .tar, que se descromprime al ejecutar el 
script. Creo que los paquetes originales de los drivers privativos de ATI 
utilizaban algo así; hay un paquete que incluye la utilidad, pero no recuerdo 
el nombre.

Ya rizando el rizo, puedes utilizar docker.

Las últimas 3 soluciones son estáticas; una vez empaquetado el código, es 
independiente del sistema en el que se ejecuta. No aprovechas posibles 
soluciones a errores ni actualizaciones del sistema.

Por último, pasando de todo lo anterior, puedes enlazar tu código con una 
pequeña parte estática, y comprobar a mano la presencia o ausencia de las 
librerias que necesites (y sus versiones), y cargarlas a mano con 'dlopen'. 
Suerte con eso ;-)

Saludos.


Reply to: