[OSy] Statické linkování knihovny librt.a
Martin Decky
decky at dsrg.mff.cuni.cz
Thu Dec 13 10:58:56 CET 2007
Hezky den,
> Mám vytvořenou knihovnu librt.a pomocí archiveru...První problém je, jak
> zařídit, aby neměla ELF formát, nedaří se mi to v optionech najít.
Staticke knihovny s priponou .a nejsou ve skutecnosti nic jineho, nez
archiv nekolika .o souboru. Tedy ta knihovna samotna nema ELF format (na
zacatku souboru muzete videt neco jako !<arch>).
Format ELF maji pochopitelne ty objektove (.o) soubory, ktere jsou v ni,
ale to neni prekvapive, protoze ELF format objektovych souboru jste
jiste pouzivali i pri buildu kernelu. Teprve pri finalnim linkovani
z nekolika objektovych souboru do vysledne binarky jste vyrobili flat
soubor bez hlavicky.
Podobne tomu bude v tomto pripade. S pomoci knihovny librt.a vytvorite
vysledny obraz uzivatelskeho procesu, ve kterem budou prilinkovany
relevantni casti objektovych souboru z librt.a. Je v podstate na Vas,
zda Vas uzivatelsky proces bude flat soubor nebo si naprogramujete
loader ELF souboru.
> Druhý problém je, jak jí potom přilinkovat. Když použiji následující optiony
> pro LD: -T ../Librt/binary.lds -G 0 -static -L../Librt -lrt -g, tak všechno
> vesele projde, ale v binárce toho vzniklého programu očividně není po
> librt.a ani stopy.
Prepinac -l se typicky pouziva pro dynamicke knihovny (.so). Pokud
chcete prilinkovat statickou knihovnu (.a), musite ji uvest jako source
soubor spolecne s ostatnimi objektovymi soubory.
M.D.
More information about the NSWI004
mailing list