Permettez-moi d'expliquer le problème avec un exemple. J'utilise un ancien programme dans mon travail quotidien, comme par exemple xfig et pdfedit .
Maintenant, ces programmes sont assez anciens et ne sont pas mis à jour trop souvent; ma crainte est qu'un jour ou l'autre ils ne fonctionneront plus faute de bibliothèque ou de mise à jour incompatible.
Si le programme est facile à compiler maintenant , sur un système en cours d'exécution, la solution est pratique: essayez de pirater un peu la source et compilez-la statiquement --- l'exécutable résultant sera gros et pas si efficace, mais cela fonctionnera pour le avenir prévisible (1). Cela semble être le cas xfig
et je vais l'essayer dès que possible.
Mais, par exemple, pdfedit
dépend de Qt3, et la mise en place d'un système pour le compiler est assez complexe à l'heure actuelle. Heureusement, il peut être exécuté dès maintenant, grâce au fait que la bibliothèque dont il a besoin n'est en conflit avec rien. Mais cela peut changer à l'avenir, donc je voudrais résoudre ce problème:
Comment puis-je créer un binaire statique (ou quelque chose de similaire) si j'en ai un dynamique et toutes les bibliothèques, mais pas de code source, sur Ubuntu?
J'ai cherché autour. Une possibilité est statifier (2), mais il a beaucoup de problèmes avec la randomisation d'adresse , donc c'est un non-non. La version non libre, Ermine , semble fonctionner, mais je préférerais vraiment une option open source.
Une autre possibilité consiste à utiliser Docker ou un système d'emballage similaire. Mais tous les tutoriels que j'ai trouvés sont assez orientés RedHat ; et, honnêtement, assez complexe à suivre.
Notes de bas de page :
(1) n'est pas si fou. J'utilise un ffmpeg statique par exemple, fonctionne bien et sans aucun problème de compatibilité ...
(2) pour compiler statifier
, voir /programming/23498237/compile-program-for-32bit-on-64bit-linux-os-causes-fatal-error