Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

statnice:oi_si_7 [2011/06/05 10:56]
marty
statnice:oi_si_7 [2025/01/03 18:23] (aktuální)
Řádek 76: Řádek 76:
  
 ==== Portace kódu a křížový překlad ==== ==== Portace kódu a křížový překlad ====
 +
 +Většinou není nutné, aby každý uživatel kompiloval software ze zdrojových kódů. Je možné dodávat konkrétní verzi zkompilovanou pro cílovou platformu. Pro sestavení programu se používá build toolchain (v případě použití GCC se označuje jako **GNU Tool Chain**). Ten zahrnuje jednak vlastní kompiler (např. GCC - GNU Compiler Collection) a dále nástroje pro vytváření knihoven, linker atd.
 +
 +Tento toolchain může kompilovat kód pro různé platformy. Na základě toho rozeznáváme **native toolchain** a **cross-compiling toolchain** (výsledné binární soubory běží na platformě toolchainu nebo na jiné platformě).
  
 {{:​statnice:​cross-compiling_toolchains.png|}} {{:​statnice:​cross-compiling_toolchains.png|}}
  
 ==== Nativní a křížové vývojové řetězce ==== ==== Nativní a křížové vývojové řetězce ====
 +
 +Na základě toho, kde sestavujeme vlastní toolchain a kde jej používáme a jaké generuje cílové binární soubory rozlišujeme několik případů. V následujících sekcích jsou použity tři stroje (ve smyslu hw architektury):​
 +
 +   * build - stroj na němž je **sestavován build toolchain** (např. gcc)
 +   * host - stroj na němž **běží build toolchain** (zkompilovaný na stroji **build**)
 +   * target - stroj na němž běží binární soubory generované překladačem běžícím na stroji **host**
  
 === Native build === === Native build ===
 +Nejběžnější je nativní build. Příkladem může být zkompilování gcc překladače v některé linuxové distribuci (e. g. Gentoo). Tento překladač je potom používán pro vygenerování binárek, které běží na téže platformě.
 +
 {{:​statnice:​native_build.png|Native build.}} {{:​statnice:​native_build.png|Native build.}}
  
 === Cross build === === Cross build ===
 +
 +Typický scénář použití pro běžný křížový překlad je u embedded systémů. Tyto systémy nejsou zpravidla dostatečně výkonné, abychom pro ně mohli zkompilovat překladač,​ který by na nich běžel a generoval binární soubory pro tuto platformu. Proto pracujeme např. v nějaké běžné linuxové distribuci (např. na architektuře core2, i686, ...), kde máme překladač (host) a generujeme např. binární kód pro ARM procesor, který běží na cílovém embedded zařízení.
 +
 {{:​statnice:​cross_build.png|Cross build.}} {{:​statnice:​cross_build.png|Cross build.}}
  
 === Cross-native build === === Cross-native build ===
 +
 +Zde můžeme uvažovat např. rozdíl mezi 32bit a 64bit linuxovými distribucemi. Může se stát, že jsou servery, na kterých jsou kompilovány binární balíčky 64bitové. V tom případě je na 64 bitové architektuře zkompilován 32bitový překladač,​ který je možné následně používat pro generování binárních souborů pro cílovou platformu.
 +
 {{:​statnice:​cross_native_build.png|Cross native build.}} {{:​statnice:​cross_native_build.png|Cross native build.}}
  
 === Canadian build === === Canadian build ===
 +Kanadský build může být použit např. pokud vygenerujeme překladač běžící na 32bitové architektuře na 64bitovém stroji, ale tento překladač generuje třeba binární soubory pro embedded zařízení.
 +
 {{:​statnice:​canadian_build.png|Canadian build.}} {{:​statnice:​canadian_build.png|Canadian build.}}
  
statnice/oi_si_7.1307264213.txt.gz · Poslední úprava: 2025/01/03 18:19 (upraveno mimo DokuWiki)
Nahoru
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0