Programovani - shared libraries na Linuxu

Stanislav Meduna stanom na etm.at
Pondělí Září 3 15:08:27 CEST 2001


Jan Bares schrieb in Nachricht <9mvrec$28mj$1 na ns.felk.cvut.cz>...

>*PIC (Position Independent Code). Jak mu?ou být v .o objektu absolutní
>adresy? Asi se jedná o nico jiného, ale co?

V .o objekte je spusta adries, ktore sa musia relokovat. PIC kod
na tieto data pristupuje nepriamo - ma tabulku odkazov, na ktoru
pristupuje relativne a az tam najde ziadanu adresu.

V kode, ktory nie je PIC, relokacia znamena, ze cela stranka
obsahujuca dany odkaz je zmenena a nemoze teda byt zdielana.
V PIC kode su privatnymi iba stranky s tabulkou odkazov
a zvysok kodu sa moze zdielat.

Windows to robia inak - ch .obj je uz zlinkovany s konkretnou
virtualnou adresou (volitelnou pri linkovani kniznice). Ak je pri behu
aplikacie dany rozsah volny, fajn, netreba nic robit. Ak nie,
relokuje sa a je po zdielani. Pristup je rychlejsi ako PIC kod,
ale zase sa clovek vracia do starych cias rucneho zadavania
adries, pokial chce mat kniznice naozaj zdielane.

>*Jak ureím které funkce/prominné se exportují?

Defaultovo nijak, exportuje sa vsetko co nie je staticke. Asi budu
existovat direktivy, ale tu nie som doma a pomoze niekto kovanejsi.

Rozhodne to nie je zvykom a nieco na sposob windowsackeho
__declspec( dllexport ) a.p. v linuxovom kode asi neuvidite.

Zdravi
--
                                                     Stano





Další informace o konferenci Linux