Portál AbcLinuxu, 10. května 2025 09:00

Dotaz: loadovanie dynamických knižníc

31.3.2009 19:56 rastos | skóre: 63 | blog: rastos
loadovanie dynamických knižníc
Přečteno: 130×
Odpovědět | Admin
Pokúšam sa rozbehnúť Virtualbox 2.1.4 OSE kompilovaný zo zdrojákov. Ako root je možné ho spustiť takto:

LD_LIBRARY_PATH=. ./VirtualBox

Pri pokuse spustiť to ako normálny užívateľ, dostanem chybovú hlášku

Callee RC: NS_ERROR_FACTORY_NOT_REGISTERED (0x80040154)

Na internete je toho plno, ale riešenie som nenašiel. Ale nadobudol som dojem, že problém je v nahrávaní dynamických knižníc. Po dlhšom skúmaní (a hrabaní sa v zdrojákoch) som došiel k tomu, že zlyhá volanie dlopen(.../out/linux.x86/release/bin/components/VBoxC.so, flags). V tom volaní je uvedená celá cesta. Problém je v tom, že VBoxC.so potrebuje ďalšie knižnice: VBoxVMM.so, VBoxRT.so, VBoxXPCOM.so - ktoré sú o adresár vyššie - v .../out/linux.x86/release/bin/. Ak sa použije LD_LIBRARY_PATH tak sa nájdu.

Finále: zádrhel je v tom, že sudo/su/set-uid-root rušia LD_LIBRARY_PATH (z celkom pochopiteľných dôvodov) a pridať ten adresár do /etc/ld.so.conf nepomôže pretože ldconfig dáva do cache len knižnice v súboroch, ktorých meno začína na "lib" (to bolo ďalšie pátranie v zdrojákoch ;-) ). Môžem urobiť skript, ktorý nastaví LD_LIBRARY_PATH a ten budem spúšťať cez su/sudo, ale to je nafigu riešenie. Okrem iného preto, že VB si potom ukladá veci do domovského adresára root-a. Môžem sa zhrabať do makefile-ov VB a premenovať tie knižnice tak, aby začínali s "lib" - ale to je dosť zložitá úloha.

Otázka: čo s tým?

Pod-otázka: Ako to funguje tam, kde bol VirtualBox 2.x OSE nainštalovaný z balíka?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

31.3.2009 20:02 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: loadovanie dynamických knižníc
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nestačilo by při kompilaci/linkování přistrčit volbou -R, kde se mají hledat knihovny za běhu (v GCC se to myslím musí navíc uvozovat volbou -Xlinker).
I am always ready to learn although I do not always like to be taught. (W. Churchill)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.