Crear binario estático

14

Instalé una aplicación [por ejemplo, fdisk]. Pero requería bibliotecas para su ejecución. Estoy buscando una utilidad / herramienta que me ayude a crear un binario estático a partir de binarios ya instalados. Para que pueda usarlo en cualquier lugar.

Las únicas herramientas confiables que encontré son ErmineLightde aquí , pero esta es shareware.

¿Hay algún software de código abierto disponible para lo mismo?

EDIT fdisk es solo un ejemplo. La mayoría de las veces trabajo en LFS, así que si tengo que usar alguna utilidad, debo seguir los pasos como

  1. Descargar la fuente
  2. configurar
  3. hacer
  4. hacer prueba
  5. hacer instalar,

Entonces, solo para ahorrar tiempo, estoy buscando una solución en la que pueda hacer un binario estático de debian o de fedora o de otra distribución, probarlo en LFS, y si funciona bien o según mi requisito, lo haré ir con el código fuente para la compilación.

SHW
fuente
1
¿Es el objetivo la facilidad de transferencia (es decir, ponerlo en un usb, llevarlo a cualquier parte con ese arco del procesador)?
Mike Pennington

Respuestas:

15

Si fdisk es solo un ejemplo y su objetivo es realmente hacer ejecutables estáticos a partir de ejecutables dinámicos, intente con Elf statifier . Incluso hay una comparación con Armiño (por el vendedor de Armiño, por lo tanto, advertencia (no) emptor) . Tenga en cuenta que

  • Si tiene muchos ejecutables, es probable que su tamaño combinado sea mayor que el tamaño combinado de los ejecutables vinculados dinámicamente más las bibliotecas dinámicas necesarias.
  • Hay características de GNU libc que pueden no funcionar en ejecutables vinculados estáticamente, como NSS (bases de datos de nombres de usuario, nombres de host, etc.) y características relacionadas con la configuración regional.

Si su objetivo es tener un conjunto pequeño y portátil de herramientas del sistema, está buscando BusyBox , un conjunto de herramientas centrales destinadas a sistemas integrados (incluidos fdisk). También puede estar interesado en una biblioteca estándar más pequeña que Glibc, por ejemplo dietlibc o µClibc .

Gilles 'SO- deja de ser malvado'
fuente
1
Intenté con el Elificador, pero para mi sorpresa. No funcionó. Se segfata. Intenté mucho tiempo con muchas distribuciones con muchas utilidades.
SHW
1
Probablemente sea la opción predeterminada para la aleatorización de direcciones: se explica aquí: linux-magazine.com/Issues/2009/105/Ermine-vs.-Statifier
Rmano
0

Bueno ... esto parece una muy mala idea. Pero es posible.

Como fdisk es de código abierto, simplemente tome su fuente y mire el Makefile. Debería encontrar una opción que pasará "-static" a gcc en la compilación.

No soy un gurú de C / C ++ pero, hasta donde sé, no es posible crear un binario enlazado estáticamente a partir de un binario enlazado dinámicamente existente.

Si desea usarlo en cualquier lugar, le recomiendo usar una pequeña distribución de mantenimiento que comienza en segundos y le permite modificar todo.

Tiene más sentido para mí porque probablemente querrás modificar el disco que ejecuta tu instalación de Linux / UNIX.

tiktak
fuente
Tu respuesta parece contradictoria, dijiste "... muy mala idea. Pero es posible", y luego también "... no es posible crear un binario enlazado estáticamente a partir de un binario enlazado dinámicamente". Por favor aclare su respuesta, sería de gran ayuda.
JM Becker
@TechZilla: es posible crear un binario estático, pero no, por tiktak, crear uno a partir de un binario vinculado dinámicamente existente . Sin embargo, vea la respuesta aceptada para algunas habilidades posibles para hacer esto último. [Nota: el comentario está destinado más a futuros lectores que criticar cualquier cosa que esté aquí.]
lindes
-3

También puede usar ELFex Linker , es un programa genial que acabo de descubrir, es GUI y puede crear ejecutables estáticos a partir del ejecutable dinámico.

Josh
fuente
El enlace no funciona.
Jakuje
Link funciona para mí y parece responder la pregunta directamente. Sugeriría que no sea spam.
roaima
El link funciona para mí. La página tiene el número de errores tipográficos / gramaticales / editoriales que puede esperar del trabajo de un programador profesional: más de lo que esperaría de un sitio web profesional, menos de lo que esperaría de un correo electrónico de phishing. Casi lo mismo que la publicación anterior, ahora que lo pienso. Parece sospechoso que este nuevo usuario se uniera a Stack Exchange justo a tiempo para publicar un enlace a lo que parece ser un sitio web completamente nuevo.
G-Man dice 'Restablecer a Monica' el