Produkty Novinky Články Návody Kontakty

Kompilátor GCC

Bez kompilátoru by život programátora byl procházkou peklem. Vždyť kdo by dokázal psát své programy přímo ve strojovém kódu toho kterého procesoru? Naštěstí se takto trápit nemusíme. Stačí si vybrat spravný kompilátor, který podporuje cílovou platformu, a můžeme zvesela programovat. Což ovšem přináší nutnost, umět kompilátor správně používat a nastavit. V této části textu se proto zaměříme na oblast používání kompilátoru často opomíjenou, ale pro nás ”embedďáky” zvláště důležitou. Budeme totiž zjišťovat, kde kompilátor při překladu naší aplikace hledá hlavičkové soubory a systémové knihovny. Mimo to se však ještě seznámíme s oblíbeným křížovým kompilátorem gcc od firmy CodeSourcery a představíme si nejčastěji používané binární utility jako je linker apod.
Možná si teď říkáte, proč je pro programátora aplikací pro embedded zařízení tak důležité vědět, kde kompilátor hledá hlavičkové soubory standardních systémových knihoven. A proč by měl vědět, kde kompilátor hledá systémové knihovny jako libc apod., které vytvářejí standardní běhové (run-time) prostředí pro aplikace psané v jazyce C/C++?
Je to kvůli tomu, že programátor ”embedďák” potřebuje mít jistotu, že se jeho aplikace kompiluje a linkuje se standardními systémovými knihovnami (a jejich hlavičkovými soubory), které budou použity v cílovém zařízení. Rozhraní, tj. hlavičkové soubory, a funkcionalita standardních knihoven použitých v cílovém zařízení se totiž může od knihoven v jeho počítači značně lišit (srovnej např. libc a uClibc).
Odlišnost v rozhraní a funkcionalitě standardních systémových knihoven v pracovním počítači a v cílovém zařízení je třeba vzít v úvahu už ve fázi psaní zdrojového kódu. Nicméně je velmi frustrující při první kompilaci zjistit, že váš kód nejde přeložit prostě jen proto, že váš kompilátor používá špatné hlavičkové soubory knihoven nebo linkuje špatné knihovny.
V následujícím textu si proto na nativním kompilátoru gcc (součást distribuce Debian 6.0 Squeeze) předvedeme, jak zjistit, kde kompilátor hledá hlavičkové soubory a knihovny.
Pak si nainstalujeme křížový kompilátor Sourcery G++ Lite, ukážeme si, jak jej správně nastavit pro cílové zařízení, a s využitím znalostí získaných při hrátkách s nativním kompilátorem zkusíme i v případě křížového kompilátoru zjistit, kde hledá hlavičkové soubory a knihovny.
A konečně, jak už jsem v úvodu slíbil, na závěr si představíme ty nejběžněji používané binární utility distribuované společně s kompilátorem - ld (linker), strip, objcopy atd.