staticke linkovani s glibc 2.1 ?

Vaclav Ovsik Vaclav.Ovsik na i.cz
Úterý Leden 25 11:02:13 CET 2000


Zdravim,

Ted nedavno jsem resil, jak vyrobit binarku programu, aby byla prenositelna
na jiny system dejme tomu se stejnou radou kernelu.

Naivne jsem si myslel, ze postaci vsechno prelozit s volbou  -static.
Strcil jsem tedy binarku do adresare tam pridal jeste nejake /etc
passwd, group, nsswitch.conf. Pak jsem zkusil chroot na adresar
a pustit to. Ale ono to jeste chtelo dynamicke knihovny, nejake
ty libnss*.

Vytusil jsem zradu. Pohledem na veci z glibc jsem dosel k zaveru,
ze dynamickych modulu, ktere muze loadovat za chodu je pomerne dost.
Duvodem je bezpochyby zvetsujici se objem veci, ktere knihovna implementuje.

Umite nekdo zalinkovat do programu ty moduly tak, aby to pri spusteni
uz nic nechtelo ? Respektive lze to vubec ? Nasel jsem /usr/lib/libnsl.a,
ktera asi implementuje NSS, ale jak to slinkovat bez zasahu
do stavajiciho programu.

Napadlo me pouzit jako voditko balicek anonftp, (drive se tam pouzivaly
staticky slinkovane ls a tak).
Ovsem k memu prekvapeni uz tam byly veci dynamicke, selektivne vybrane
potrebne moduly.
Znamena to tedy konec statickeho linkovani za ucelem zbaveni se zavislosti
na okolnim prostredi ?

Ja jsem nakonec do stromu pro chroot narval celou glibc, nebudu premyslet
co kdy jaky soft bude potrebovat (je toho trochu vic).

Jeste otazka pro zkusene makace. Predpokladam spravne nasledujici ?
Kdyz udelam 'chroot /nekam /bin/prog'
1) Kernel pusti /nekam/lib/ld-2.1.2.so
2) ld-linux.so.2 bude tahat pekne dll z /nekam/lib... a nebude
   je michat s uz natazenymi v pameti, byt by mely stejne verze.

Jeste naivni otazka: Jmeno dynamickeho linkeru se zadratuje do kernelu
pri prekladu ? (v mem pripade asi /lib/ld-2.1.2.so nebo
/lib/ld-linux.so.2 ze ?) Nebo kernel zkousi najit ruzne dyn loadery?

Diky

--
	Vaclav Ovsik		email: Vaclav.Ovsik na i.cz
	ICZ a.s.		phone: +420 19 7165659
				fax:   +420 19 7165651



Další informace o konferenci Linux