Déjame explicarte el problema con un ejemplo. Utilizo algún programa antiguo en mi trabajo diario, como por ejemplo xfig y pdfedit .
Ahora, estos programas son bastante antiguos y no se actualizan con demasiada frecuencia; Mi temor es que un día u otro ya no funcionen por falta de alguna biblioteca o alguna actualización incompatible.
Si el programa es fácil de compilar ahora , en un sistema en ejecución, la solución es útil: intente hackear un poco la fuente y compilarlo de forma estática --- el ejecutable resultante será grande y no tan eficiente, pero funcionará para el futuro previsible (1). Este parece ser el caso xfig
y lo intentaré lo antes posible.
Pero, por ejemplo, pdfedit
depende de Qt3, y configurar un sistema para compilarlo es bastante complejo en este momento. Afortunadamente, se puede ejecutar en este momento, gracias al hecho de que la biblioteca que necesita no entra en conflicto con nada. Pero esto puede cambiar en el futuro, por lo que me gustaría resolver este problema:
¿Cómo puedo hacer un binario estático (o algo similar) si tengo uno dinámico y todas las bibliotecas, pero sin código fuente, en Ubuntu?
Busqué alrededor. Una posibilidad es el statifier (2), pero tiene muchos problemas con la aleatorización de direcciones , por lo que es un no-no. La versión no gratuita, Ermine , parece funcionar, pero realmente preferiría una opción de código abierto.
Otra posibilidad es usar docker o un sistema de empaque similar. Pero todo el tutorial que encontré está bastante orientado a RedHat ; y, sinceramente, bastante complejo de seguir.
Notas al pie :
(1) no es tan loco. Utilizo un ffmpeg estático, por ejemplo, funciona bien y sin problemas de compatibilidad ...
(2) para compilar statifier
, consulte /programming/23498237/compile-program-for-32bit-on-64bit-linux-os-causes-fatal-error
linux-vdso.so.1
no se ve por ninguna parte, supongo que está en el núcleo, ¿correcto?man 7 vdso
: "El" vDSO "(objeto virtual dinámico compartido) es una pequeña biblioteca compartida que el núcleo asigna automáticamente al espacio de direcciones de todas las aplicaciones de espacio de usuario".Una sugerencia con respecto al estadificador :
Si la aleatorización del diseño del espacio de direcciones (ASLR) está causando que falle, no tiene que apagarlo para toda la máquina. Puede desactivarlo solo para ese proceso:
Ejecutará ese comando con un diseño aleatorio deshabilitado (no es necesario que sea root).
fuente
statifier
...xfig_statified
todavía volcados de núcleo ... una pena. Gracias de cualquier manera.