Création d'un binaire statique


14

J'ai installé une application [par exemple fdisk]. Mais il fallait des bibliothèques pour l'exécution. Je recherche un utilitaire / outil qui m'aidera à créer un binaire statique à partir de binaires déjà installés. Pour que je puisse l'utiliser n'importe où.

Le seul outil fiable que j'ai trouvé vient ErmineLightd' ici , mais celui-ci est du shareware.

Existe-t-il des logiciels open source pour les mêmes?

EDIT fdisk n'est qu'un exemple. Je travaille la plupart du temps sur LFS, donc si je dois utiliser un utilitaire, je dois suivre les étapes

  1. Téléchargez la source
  2. configurer
  3. faire
  4. faire un test
  5. faire installer,

Donc, juste pour gagner du temps, je cherche une solution dans laquelle je ferai un binaire statique à partir de Debian ou de Fedora ou d'autres distributions, essayez-le sur LFS, et si cela fonctionne bien ou selon mes besoins, je aller avec le code source pour la compilation.


1
l'objectif est-il simplement de faciliter le transfert (c'est-à-dire de le mettre sur une clé USB, de l'emporter n'importe où avec cette arche de processeur)?
Mike Pennington

Réponses:


15

Si fdisk n'est qu'un exemple et que votre objectif est vraiment de créer des exécutables statiques à partir d'exécutables dynamiques, essayez Elf statifier . Il y a même une comparaison avec Ermine (par le vendeur Ermine, donc mise en garde (non) Emptor) . Notez que

  • Si vous avez de nombreux exécutables, leur taille combinée sera probablement supérieure à la taille combinée des exécutables liés dynamiquement plus les bibliothèques dynamiques nécessaires.
  • Il existe des fonctionnalités de GNU libc qui peuvent ne pas fonctionner dans un exécutable lié statiquement, comme NSS (bases de données de noms d'utilisateurs, noms d'hôte, etc.) et des fonctionnalités liées aux paramètres régionaux.

Si votre objectif est d'avoir une petite suite d'outils système portable, vous recherchez BusyBox , une suite d'outils de base destinés aux systèmes embarqués (y compris fdisk). Vous pouvez également être intéressé par une bibliothèque standard plus petite que Glibc, par exemple dietlibc ou µClibc .


1
J'ai essayé le statif Elf, mais à ma grande surprise. Cela n'a pas fonctionné. Il se sépare. J'ai essayé plusieurs fois avec de nombreuses distributions avec de nombreux utilitaires.
SHW

1
Il s'agit probablement de défauts de randomisation d'adresse: c'est expliqué ici: linux-magazine.com/Issues/2009/105/Ermine-vs.-Statifier
Rmano

0

Eh bien ... cela ressemble à une très mauvaise idée. Mais c'est possible.

Comme fdisk est open source, saisissez simplement sa source et regardez le Makefile. Vous devriez trouver une option qui passera "-static" à gcc lors de la compilation.

Je ne suis pas un gourou du C / C ++ mais pour autant que je sache, la création d'un binaire lié statiquement à partir d'un binaire existant lié dynamiquement n'est pas possible.

Si vous souhaitez l'utiliser n'importe où, je vous recommande d'utiliser une petite distribution de maintenance qui démarre en quelques secondes et vous permet de tout modifier.

Cela a plus de sens pour moi car vous voudrez probablement modifier le disque exécutant votre installation Linux / UNIX.


Votre réponse semble contradictoire, vous avez dit "... très mauvaise idée. Mais, c'est possible", puis aussi "... la création d'un binaire lié statiquement à partir d'un binaire existant lié dynamiquement n'est pas possible". Veuillez clarifier votre réponse, ce serait très utile.
JM Becker

@TechZilla: créer un binaire statique est possible, mais pas, par tiktak, en créer un à partir d'un binaire lié dynamiquement existant . Cependant, voir la réponse acceptée pour certaines capacités possibles pour faire ce dernier. [Remarque: le commentaire visait plus les futurs lecteurs que de critiquer tout ce qui se trouve ici.]
lindes

-3

vous pouvez également utiliser ELFex Linker , son un programme assez cool que je viens de découvrir, son interface graphique et peut créer des exécutables statiques à partir de l'exécutable dynamique.


le lien ne fonctionne pas.
Jakuje

Link fonctionne pour moi et semble répondre directement à la question. Je dirais que ce n'est pas du spam.
roaima

Le lien fonctionne pour moi. La page contient le nombre d'erreurs de frappe / grammaticales / éditoriales que vous pourriez attendre du travail d'un programmeur professionnel - plus que ce que vous attendez d'un site Web professionnel, moins que ce que vous attendez d'un e-mail de phishing. À peu près la même chose que le post ci-dessus, pensez-y. Il semble suspect que ce tout nouvel utilisateur rejoigne Stack Exchange juste à temps pour publier un lien vers ce qui semble être un tout nouveau site Web.
G-Man dit `` Réintègre Monica ''
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.