GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Quelle est la portabilité des binaires compilés dans Ubuntu ?

Le titre dit tout, en fait. Mais permettez-moi de préciser la question :

En supposant que je devais compiler une application qui utilise libffi, libGL, dlfcn et SDL, est-ce que ledit binaire fonctionnerait sur d'autres distributions Linux avec la même architecture, etc ?

La raison pour laquelle je demande est à cause du répertoire /usr/lib/i386-linux-gnu – Je me trompe peut-être, mais je suppose que ce répertoire est quelque chose de plutôt spécifique à Ubuntu, non ?

Alors, à quel point les binaires compilés sur Ubuntu sont-ils vraiment portables ?

Réponse acceptée :

Lorsque vous compilez un binaire, disons, nginx à partir du code source, il est construit avec des informations sur les versions des bibliothèques présentes sur le système qui compile les binaires. Les bibliothèques à référencer sont bien sûr déterminées par les arguments (pour nginx , c'est la définition des modules que vous voulez activer ou non). Mais ce binaire que vous avez construit s'exécutera (peu probablement) sur un système séparé, à moins qu'il ne s'agisse d'un système configuré de manière identique.

Vous voudrez compiler l'application sur chaque système individuel, il est (relativement) peu probable que vous puissiez porter la version compilée sur un autre système qui pourrait pas de version compatible de chaque bibliothèque.

Remarque :tant que vous pouvez obtenir un binaire à porter sur un autre système Linux, c'est malavisé et prend généralement du temps. C'est parce que :
(1) Vous devez vous assurer que le système vers lequel vous allez déplacer votre binaire utilise la même version de libc qui a été utilisé pour compiler les binaires
(2) Vous devez vous assurer que les bibliothèques utilisées dans le programme peuvent être détectées facilement sur votre système, et qu'elles sont les mêmes versions (ou compatibles) que celles utilisées pour créer le programme.

… et bien sûr d'autres variables à prendre en compte. Il est simplement plus facile à long terme de compiler le programme sur chaque système pour l'utiliser plutôt que d'essayer de rechercher la portabilité.


Ubuntu
  1. Comment installer Ubuntu avec Windows 10

  2. Comment configurer les mises à jour automatiques sur Ubuntu 18.04

  3. Comment installer Gradle sur Ubuntu 18.04

  4. Comment installer Elasticsearch sur Ubuntu 20.04

  5. Comment désactiver un service dans Ubuntu

Comment réinstaller Ubuntu

Comment installer urBackup sur Ubuntu 20.04

Comment installer Dropbox sur Ubuntu 18.04 et 16.04

Comment installer AnyDesk sur Ubuntu 20.04

Comment installer GIMP 2.10 sur Ubuntu 20.04

Comment mettre à niveau Ubuntu 18.04 vers Ubuntu 20.04