Staticke linkovani

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Čtvrtek Březen 8 02:02:13 CET 2007


On Tue, 6 Mar 2007, Ladislav Vaiz wrote:

> pri statickem linkovani programu vyuzivajicim nektere funkce glibc
> (gethostbyname) vypisuje linker varovani, ze je pro beh programu stejne 
> potreba dynamicka knihovna spravne verze.

Za to může NSS. Když použijete nějakou funkci typu gethostbyname(), tak 
ten požadavek ve skutečnosti vyřizuje NSS modul, což jsou dynamické 
knihovny /lib/libnss_files.so.2 apod. A když tam takový modul natáhnete, 
tak ten s sebou přitáhne i libc.so.

> Je mozne slinkovat aplikci "opravdu staticky" s proti soucasnemu glibc?

Bývalo možno NSS moduly přilinkovat do libc.a staticky, ale byla to taková
obskurní opšna při kompilaci Glibc. Možná to v novějších verzích zrušili,
nebo to distribuce záměrně nepoužívají, protože to bylo všechno nebo nic,
a tak staticky linkované programy nemohly používat externí NSS moduly,
které nebyla v libc.a obsažené (např. nss_ldap), což mohlo být vnímáno
jako větší zlo.

Říkal jsem si, že by byl zajímavý hack to upravit, aby šlo mixovat
statické a dynamické moduly, ale byly na práci důležitější věci...

Také to lze ne vyřešit ale obejít tak, že spustíte démona nscd. Pak bude
program posílat svoje dotazy na data do nscd a za příznivé konstelace
hvězd nikdy nepocítí potřebu natahovat NSS moduly do svého procesu.

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."




Další informace o konferenci Linux