Portál AbcLinuxu, 3. listopadu 2025 13:58
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?
-R, kde se mají hledat knihovny za běhu (v GCC se to myslím musí navíc uvozovat volbou -Xlinker).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.