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