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