Dynamicke knihovny

Pavel Kankovsky peak na kerberos.troja.mff.cuni.cz
Pátek Leden 22 12:00:50 CET 1999


On Fri, 22 Jan 1999, Vojta Filip wrote:

> Diky. Jeste bych mel ale nejaky dotaz: Knihovna se ma kompilovat s
> parametrem -fPIC, tedy position independent code. Muzete mi rict, ktery
> duvod k tomu vede?

oba duvody

> 1. Knihovna se muze natahnout kamkoliv do pameti a je snazsi mit PIC nez
> natahovany kod relokovat podle umisteni

i v pripade PIC se musi delat relokace, ale je omezena jen na male
specialni oblasti (.plt, .got), zatimco u non-PIC je nutno relokovat
vsechno

> 2. Knihovna je sdilena vice programy a kernel zajistuje skutecne sdileni
> pameti, tedy pokud je v kazdem programu natazena jinam, kod musi byt
> PIC.

viz nize

> Svoji knihovnu chci pouzivat jen jednim programem (takze mi druhy duvod
> odpada) a chtel bych, aby byla co nejrychlejsi, tedy zamezit pripadnym
> zpomalenim plynoucim z -fPIC.

v prvni rade nikoli "jednim programem", ale "jednim bezicim procesem"
(coz muze byt rozdil)

kod, ktery neni "position independent" byva o trochu (vetsinou jednotky
procent) rychlejsi, zase na druhou stranu, je-li linkovan dynamicky, pak
stravi dynamic linker mnohem vice casu a prostoru na to, aby ho
prilinkoval

pokud *opravdu* zalezi na rychlosti a je to pro jeden program, pak by asi
bylo vyhodnejsi zkompilovat knihovnu bez -fPIC a prilinkovat ji staticky

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"NSA GCHQ KGB CIA nuclear conspiration war weapon spy agent... Hi Echelon!"



Další informace o konferenci Linux