GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Wie portabel sind in Ubuntu kompilierte Binärdateien?

Der Titel sagt eigentlich alles. Aber gestatten Sie mir, die Frage zu präzisieren:

Angenommen, ich würde eine Anwendung kompilieren, die libffi, libGL, dlfcn und SDL verwendet, würde diese Binärdatei auf anderen Linux-Distributionen mit derselben Architektur usw. laufen?

Der Grund, warum ich frage, ist wegen des Verzeichnisses /usr/lib/i386-linux-gnu – Ich könnte mich irren, aber ich nehme an, dass dieses Verzeichnis eher Ubuntu-spezifisch ist, oder?

Also, wie portabel sind Binärdateien, die auf Ubuntu kompiliert wurden, wirklich?

Akzeptierte Antwort:

Wenn Sie eine Binärdatei kompilieren, sagen Sie nginx Aus dem Quellcode enthält es Informationen darüber, welche Versionen der Bibliotheken sich auf dem System befinden, das die Binärdateien kompiliert. Die zu referenzierenden Bibliotheken werden natürlich durch die Argumente bestimmt (für nginx , das ist die Definition, welche Module aktiviert werden sollen oder nicht). Aber die von Ihnen erstellte Binärdatei wird (unwahrscheinlich) auf einem separaten System ausgeführt, es sei denn, es handelt sich um ein identisch konfiguriertes System.

Sie werden die Anwendung auf jedem einzelnen System kompilieren wollen, es ist (relativ) unwahrscheinlich, dass Sie die kompilierte Version auf ein anderes System portieren können, das vielleicht nicht über eine kompatible Version jeder Bibliothek verfügen.

Hinweis:Solange Sie können Holen Sie sich eine Binärdatei, um sie auf ein anderes Linux-System zu portieren, es ist nicht ratsam und normalerweise zeitaufwändig. Dies liegt daran, dass:
(1) Sie sicherstellen müssen, dass das System, auf das Sie Ihre Binärdatei verschieben werden, dieselbe Version von libc verwendet die zum Kompilieren der Binärdateien verwendet wurde
(2) Sie müssen sicherstellen, dass die innerhalb des Programms verwendeten Bibliotheken auf Ihrem System leicht erkannt werden können und dass es sich um dieselben (oder kompatiblen) Versionen wie verwendet handelt um das Programm zu erstellen.

…und natürlich andere zu berücksichtigende Variablen. Es ist auf lange Sicht einfach einfacher, das Programm auf jedem System zu kompilieren, um es zu verwenden, anstatt zu versuchen, Portabilität anzustreben.


Ubuntu
  1. So installieren Sie Ubuntu zusammen mit Windows 10

  2. So richten Sie automatische Updates unter Ubuntu 18.04 ein

  3. So installieren Sie Gradle unter Ubuntu 18.04

  4. So installieren Sie Elasticsearch unter Ubuntu 20.04

  5. So deaktivieren Sie einen Dienst in Ubuntu

So installieren Sie Ubuntu neu

So installieren Sie urBackup auf Ubuntu 20.04

So installieren Sie Dropbox unter Ubuntu 18.04 und 16.04

So installieren Sie AnyDesk unter Ubuntu 20.04

So installieren Sie GIMP 2.10 unter Ubuntu 20.04

So aktualisieren Sie Ubuntu 18.04 auf Ubuntu 20.04