Elfovske sdilene knihovny a kompilace s -fPIC

Pavel Kankovsky peak na kerberos.troja.mff.cuni.cz
Pondělí Září 1 20:36:05 CEST 1997


On Mon, 1 Sep 1997, Pavel JANIK ml. wrote:

> > mam jede takovy vsetecny dotaz. Zkousel jsem si vytvorit malickou sdilenou
> > knihovnu. Vsechno mi v pohode funguje, jak explicitni linkovani v
> > programu pomoci dload,dsym,dclose tak dynamicke linkovani primo pri kompilaci.
> .. snipped ...
> > Funkce v knihovne se zavola dobre, odkazy v te funkci na globalni data
> > v te knihovne fungujou taky. Proc potom ty slozitosti ?
> 
> -fPIC vytvari position independent code, ktery se potom pouzije k vytvoreni
> dynamicky linkovatelne knihovny. Ty "slozitosti" tam jsou proto, ze knihovny
> jsou i shared (sdilene). Nebo jste myslel neco jineho ?

no prave; ale dovolim si to trochu rozvest:

je dost dobre mozne (a ja tomu celkem verim), ze dynamic linker zvladne
spravit odkazy v non-PIC kodu (zajimave by asi bylo srovnat velikost
relokacnich sekci obou vyslednych binarek), ale tim, ze jsou mista, ktera
musi upravit, roztrousena po celem kodu, se celkem uspesne dosahne toho, ze
se vysledne jedna o "nesdilenou knihovnu" (poznamka na okraj: takhle
funguje loadovani exe/dll ve Win32, aspon pokud se neprovede nejaka cerna
magie s preferovanymi adresami :/)

naproti tomu PIC dela ruzne kejkle, aby se odkazy na globalni symboly
shromazdily na jedno misto, takze stranek, ktere linker upravi je
relativne malo a vysledkem je znacna uspora pameti a (coz muze--ale
nemusi--vyvazit vetsi spotrebu cpu)

--Pavel Kankovsky aka Peak (troja.mff.cuni.cz network administration)



Další informace o konferenci Linux