Programovani - shared libraries na Linuxu

Lubos Lunak l.lunak na sh.cvut.cz
Pondělí Září 3 23:16:30 CEST 2001


Stanislav Meduna wrote:

> 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.

 Zatimco na Unixech pouzivany ELF system nas dostava do novych casu, kdy 
primitivni programek slinkovany s hodne knihovnami zere kvanta pameti jen 
pro ty knihovny, nemluve o startovacim casu.

> 
>>*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.

 Pro psani knihoven je jako dokumentace asi nejlepsi dokumentace k 
libtoolu, pro princip implementace a tak treba http://iecc.com/linker/ .

 Lubos Lunak
--
 l.lunak na email.cz ; l.lunak na kde.org
 http://dforce.sh.cvut.cz/~seli



Další informace o konferenci Linux