Toto je starší verze dokumentu!
Požadavky a pravidla pro tvorbu přenositelného kódu
Při realizaci softwarových systémů často nemůžeme zanedbat cílovou hardwarovou architekturu stroje a musíme psát kód tak, aby jej bylo možné snadno upravit (ideálně pouze rekompilovat) pro běh na jiných platformách. V okamžiku kdy je nutné přímo interagovat s některou hardwarovou komponentou počítače (řídící jednotky, SCADA systémy, …), se dostáváme až na úroveň, kdy musíme řešit věci, jako uspořádání bytů v proměnné apod. K základním požadavkům na přenositelnost zdrojového kódu patří:
psát čistě a používat jen to, co je jazykem deklarováno,
pokud je to možné používat pouze standardizovaná
API - POSIX, IEEE Std. 1003.1,
nepředpokládat pořadí byte/char ve slovech - little versus big endian,
nepředpokládat počet bitů v adresační jednotce (používat stdint.h - int32_t, …),
psát kód proti knihovnám a nikoliv přímo proti konkrétním voláním služeb operačního systému (konkrétním makrům, číslům volání, atd.).
Organizace projektů a operačních systémů pro splnění přenositelnosti mezi různými architekturami CPU
Aby bylo možné snadno přenášet projekty mezi různými operačními systémy a jejich verzemi a hardwarovými architekturami, bylo definováno několik standardů a vyvinuto několik nástrojů, které mají tuto přenositelnost usnadnit:
POSIX - Portable Operating System Interface - standardy IEEE 1003 a ISO/IEC 9945
Filesystem hierarchy standard - dokument popisující, co má být ve kterém adresáři v linuxové distribuci (/usr/bin, /usr/local, /usr/share, …)
autotools project
Kompilace GNU balíků
Autotools:
m4, aclocal, autoheader
autoheader
autoconf
automake
Makefile.am, configure.ac, … WIP
Nativní a křížové vývojové řetězce
Native build
Cross build
Cross-native build
Canadian build
Nahoru