Fizetési módok Abuse

Ошибка hiba megosztott könyvtárak betöltése közben

21.02.2024, 22:45

A Linux-felhasználók gyakran találkoznak a megosztott könyvtárak betöltési hibájával a programok futtatásakor, és ez a hiba sok programozó és mindenki számára ismerős, aki szoftvert szeretne fordítani a rendszerén. Szó szerint azt jelenti, hogy probléma van a megosztott könyvtárak betöltése közben.

További információk a hiba hiba megosztott könyvtárak betöltése közben című hibáról

A "hiba megosztott könyvtárak betöltése közben" hiba azt jelenti, hogy egy program vagy szkript futtatásakor az operációs rendszer nem tudott megtalálni és betölteni egy vagy több olyan könyvtárat, amely szükséges a program működéséhez. Ez gyakori probléma a UNIX-szerű operációs rendszerekben. Egy program fordításakor különböző külső könyvtárakra hivatkozhat, amelyeknek futáskor rendelkezésre kell állniuk. Ha ezek a könyvtárak hiányoznak vagy nem állnak rendelkezésre, akkor a megosztott könyvtárak betöltése során hiba lép fel.

Még ha nem is fordítjuk le a programjainkat, akkor is elég gyakran megjelenhet ez a hiba: directory_name: cannot open shared object file: No such file or directory új, nem a csomagkezelőn keresztül telepített programok vagy más disztribúcióhoz szánt programok telepítésekor. Ez azért fordul elő, mert a rendszer nem találja a könyvtárat. Miért nem találja meg és nem tölti be?

Több oka is van, általában egy könyvtárról van szó, ami:

  • nincs telepítve a rendszerben;
  • telepítve van, de rossz helyen van;
  • helyesen van telepítve, de rossz a verziója.

A probléma megoldása során ezekből az okokból fogunk kiindulni, és megpróbáljuk megoldani őket.

Hogyan javítható a megosztott könyvtárak betöltési hibája?

Ezután nézzük meg a probléma megoldásának konkrét példáit az előző bekezdésben említett okok alapján.

A könyvtár nincs telepítve

Itt nincs semmi bonyolult, és minden teljesen egyértelmű - a könyvtár egyszerűen nincs jelen a rendszerben, ezért kapjuk ezt a hibát. Ezért meg kell keresnünk a könyvtárcsomagot egy csomagkezelő segítségével, és telepítenünk kell. Általában a könyvtárakat tartalmazó csomagokat ugyanúgy hívják, mint magukat a könyvtárakat lib előtaggal.

Ha hiányzik a libfuse2.so könyvtár, akkor Ubuntuban ezzel a paranccsal megtalálhatjuk:

$ sudo apt search libfuse2

Ezután már csak a telepítése van hátra:

$ sudo apt install libfuse2

Ha egy programot forrásból kell építenünk, akkor a fejlécfájlokat is telepítenünk kell:

$ sudo apt install libfuse-dev

És így van ez bármelyik könyvtár esetében. De ez nem mindig működik.

A könyvtár rossz katalógusban van

A gyakorlatban vannak olyan esetek, amikor a könyvtárat telepítették, de a hiba továbbra is fennáll, és nem teszi lehetővé, hogy a felhasználók normálisan interakcióba lépjenek a rendszerrel. Mi a teendő ilyen esetben? Először is ellenőrizze a Linux rendszerbetöltőjét, amely nem találja a könyvtárat. A keresést a /etc/ld.conf.d/ konfigurációs fájlokban megadott könyvtárakban kell elvégezni. Ezek általában a /usr/lib, /lib, /usr/lib64, /lib64. Ha a könyvtár más könyvtárba van telepítve, akkor nyilvánvalóan ez a probléma gyökere.

A betöltő számára jelenleg elérhető könyvtárakat a következő paranccsal láthatjuk:

$ ldconfig -p

Keresse meg, hogy hol található a könyvtár a locate parancs segítségével. Például minket a librtfreader.so könyvtár érdekel:

$ locate librtfreader

Ha tudjuk a /opt/kingsoft/wps-office/office6/ helyét, akkor lehetővé kell tennünk, hogy a betöltőprogram felismerje a könyvtárat. A konfigurációs fájlba vagy az LD_LIBRARY_PATH változóba beírjuk a /etc/ld.so.conf.d/ elérési utat:

export LD_LIBRARY_PATH=/opt/kingsoft/wps-office/office6/

Bármilyen könyvtárral telepíthetjük, amely a hibát előhívja. Választhatjuk a kevésbé bonyolult utat is: létrehozhatunk egy szimbolikus linket a megfelelő könyvtárhoz a megfelelő könyvtárban:

ln -s /opt/kingsoft/wps-office/office6/librtfreader.so /usr/lib/librtfreader.so

Invalid library version

Ez általában akkor fordul elő, ha olyan disztribúcióhoz tartozó programokat használsz, amelyet nem telepítettél. Minden könyvtárnak van egy kiegészítő verziója, amely a .so kiterjesztés után van kiírva. Például libav.so.1. A verziószám minden alkalommal változik, amikor egy könyvtárat javítanak.

Gyakran előfordul, hogy az egyik disztribúcióban egy program egy könyvtárfüggőséggel épül, például libc .so.1, egy másik disztribúcióban pedig csak libc.so.2. A legtöbb esetben itt a különbségek kicsik, és a program a könyvtár második verzióján is futhat. Így egyszerűen létrehozhatunk egy szimbolikus linket hozzá.

Például nincs libusb-1.0.so.1 könyvtár. De van libusb-1.0.so.0.1, és azt használhatjuk:

Ehhez egyszerűen létrehozunk egy szimbolikus linket a könyvtárhoz:

$ sudo ln -s /usr/lib/libusb-1.0.so.0.1 /usr/lib/libusb-1.0.so.1

Gyakran a program nem veszi észre a helyettesítést, és működni fog. Okos megoldásként próbáljuk megkeresni az interneten a könyvtár architektúránknak megfelelő verzióját, és helyezzük el a /usr/lib/ vagy /usr/lib64/ mappába. Ezt követően azonban kívánatos a gyorsítótár frissítése:

$ sudo ldconfig

Ha a probléma a fenti lépések után is fennáll, ajánlott a program vagy az operációs rendszer dokumentációjában részletesebb információt találni a szükséges könyvtárverziókról és azok telepítéséről.