2016-11-12 4 views
1

Si j'ai un fichier binaire ELF, généré dans Ubuntu en utilisant gcc ou QtCreater, ce binaire peut-il être exécuté dans une autre distribution Linux, telle que RHEL?
(Je suppose que les programmes CLI purs peuvent, mais les programmes GUI dépend)
Peut binaire 32 bits s'exécuter sur une machine 64 bits, ou vice versa?Binaires ELF dans différentes distributions linux

+0

Cela dépend de quelques facteurs (lien, dépendances, etc ...) – rkosegi

+0

Le programme x86_64 ne fonctionnera pas sur le système IA-32. Cependant, le programme IA-32 devrait fonctionner sur le système x86_64. – Michas

Répondre

1

Oui. Les binaires ELF, tant que l'architecture est compatible, peuvent être exécutés sur des systèmes différents. C'est-à-dire, ELF 32 bits x86 peut être exécuté sur un système x64 64 bits. Cela dit, cela ne signifie pas que votre programme va même commencer. Il requiert toujours que toutes les dépendances d'exécution soient satisfaites. Cela inclut notamment toutes les bibliothèques partagées utilisées par le programme. Si elles ne sont pas disponibles sur le tapis de course, le programme ne fonctionnera pas.

Vous pouvez vérifier les bibliothèques partagées nécessaires avec objdump -p <program | grep NEEDED. S'ils ne sont pas disponibles pour votre système de marquage, vous pouvez également distribuer les fichiers SO et modifier le LD_LIBRARY_PATH pour les charger.

Mais même si les bibliothèques partagées sont satisfaites, il n'est pas garanti que le programme fonctionne correctement. Vous pouvez toujours manquer les fichiers de configuration, les polices, les services système, les fonctionnalités du noyau ... Vous devrez le tester sur chaque distribution que vous avez l'intention de prendre en charge. PS: tout cela dit, le problème n'est pas conceptuellement différent entre les programmes CLI et GUI. C'est juste que les programmes GUI ont tendance à avoir tellement plus de dépendances ...