73.8.1. Přeložení do staticky slinkované binárky

Jak jsem se zmínil v úvodu, toto první problém který jsem řešil. Tedy jak přeložíme aplikaci tak, aby běžela na „libovolné“ distribuci linuxu bez nutnosti ji pokaždé znovu překládat. Tedy vytvoření jedné binárky spustitelné všude.

Poznamenávám že podmínkou je stejná architektura. Binární program tedy překládáme pro procesory Intel a neočekávejte že takto přeložený program poběží na jiných procesorech jako jsou třeba PowerPC, MIPS či ARM.

Takže zase spátky k našemu problému. Přeložit program a slinkovat staticky je velmi jednoduché. Jediné co potřebujeme je přidat volbu -static na správné místo v souboru Makefile-webapp. Volbu zapíšeme do WEBAPP-LDFLAGS

# dynamically linked libraries
WEBAPP_LDFLAGS = -static
$ make clean
$ make setup
$ make

Poznámka

Pokud se nám při překladu objevují chyby jako:

(.text+0x72a): undefined reference to `dlerror'

Máme v systému nainstalovánu vývojářskou verzi knihovny libssl-dev. Přidáme ještě k volbě -static volbu -ldl jak je popsáno v 73.8.2 – „Https v staticky sestavené aplikaci“.