GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak přenosné jsou binární soubory kompilovány v Ubuntu?

Název vlastně mluví za vše. Dovolte mi však upřesnit otázku:

Za předpokladu, že bych zkompiloval aplikaci, která používá libffi, libGL, dlfcn a SDL, řekl bych, že binární běží na jiných distribucích Linuxu se stejnou architekturou atd.?

Důvod, proč se ptám, je kvůli adresáři /usr/lib/i386-linux-gnu – Možná se mýlím, ale předpokládám, že tento adresář je něco spíše specifického pro Ubuntu, ne?

Jak přenosné jsou tedy binární soubory na Ubuntu skutečně kompilovány?

Přijatá odpověď:

Když kompilujete binární soubor, řekněme nginx ze zdrojového kódu je sestaven s informacemi o tom, jaké verze knihoven jsou v systému, který kompiluje binární soubory. Knihovny, na které se odkazuje, jsou samozřejmě určeny argumenty (pro nginx , to je definice, které moduly chcete aktivovat nebo ne). Ale binární soubor, který jste vytvořili, bude (nepravděpodobně) běžet na samostatném systému, pokud se nejedná o identicky nakonfigurovaný systém.

Budete chtít zkompilovat aplikaci na každém jednotlivém systému, je (relativně) nepravděpodobné, že budete schopni přenést zkompilovanou verzi na jiný systém, který možná nemají kompatibilní verzi každé knihovny.

Poznámka:Zatímco můžete získat binární soubor pro port na jiný linuxový systém, je to špatně doporučené a obvykle je to časově náročné. Důvodem je:
(1) Musíte se ujistit, že systém, do kterého se chystáte přesunout svůj binární soubor, používá stejnou verzi libc který byl použit ke kompilaci binárních souborů
(2) Musíte se ujistit, že knihovny používané v programu lze ve vašem systému snadno detekovat a že se jedná o stejné (nebo kompatibilní) verze, jaké byly použity k vytvoření programu.

…a samozřejmě další proměnné, které je třeba vzít v úvahu. Z dlouhodobého hlediska je snazší zkompilovat program na každém systému a používat jej, než se snažit o přenositelnost.


Ubuntu
  1. Jak nainstalovat Gradle na Ubuntu 18.04

  2. Jak nainstalovat Elasticsearch na Ubuntu 20.04

  3. Jak deaktivovat službu v Ubuntu

  1. Jak nainstalovat Ubuntu vedle Windows 10

  2. Jak nastavit automatické aktualizace na Ubuntu 18.04

  3. Jak nainstalovat OpenProject na Ubuntu 16.04

  1. Jak nainstalovat ApostropheCMS na Ubuntu 18.04 LTS

  2. Jak restartovat Ubuntu 20.04 LTS

  3. Jak nainstalovat Django na Ubuntu 20.04