Metode de plată Abuse

Ошибка eroare în timpul încărcării bibliotecilor partajate

21.02.2024, 22:45

Utilizatorii Linux întâlnesc adesea eroarea de încărcare a bibliotecilor partajate atunci când rulează programe și este, de asemenea, familiară multor programatori și tuturor celor care doresc să compileze software pe sistemul lor. Literalmente, aceasta înseamnă că există o problemă în timpul încărcării bibliotecilor partajate.

Mai multe despre eroarea error while loading shared libraries

Eroarea"error while loading shared libraries" înseamnă că, la rularea unui program sau script, sistemul de operare nu a putut găsi și încărca una sau mai multe biblioteci care sunt necesare pentru ca acest program să funcționeze. Aceasta este o problemă frecventă în sistemele de operare de tip UNIX. Atunci când un program este compilat, acesta se poate referi la diverse biblioteci externe care ar trebui să fie disponibile la momentul rulării. Dacă aceste biblioteci lipsesc sau nu sunt disponibile, apare o eroare la încărcarea bibliotecilor partajate.

Chiar dacă nu vă compilați programele, este posibil să vedeți această eroare: directory_name: cannot open shared object file: No such file or directory destul de des atunci când instalați programe noi nu prin intermediul managerului de pachete sau programe destinate unei alte distribuții. Aceasta apare deoarece sistemul nu poate găsi biblioteca. De ce nu poate fi găsită și încărcată?

Din mai multe motive, de obicei totul se reduce la o bibliotecă care:

  • nu este instalată pe sistem;
  • este instalată, dar este în locul greșit;
  • este instalată corect, dar are versiunea greșită.

Atunci când rezolvăm problema, ne vom ghida după aceste motive și vom încerca să le rezolvăm.

Cum să remediați eroarea de încărcare a bibliotecilor partajate?

În continuare, să luăm în considerare exemple specifice de rezolvare a acestei probleme pe baza motivelor menționate în paragraful anterior.

Biblioteca nu este instalată

Nu este nimic complicat aici și totul este destul de clar - biblioteca pur și simplu nu este prezentă în sistem, de aceea primim această eroare. De aceea, trebuie să găsim pachetul cu bibliotecă cu ajutorul unui manager de pachete și să îl instalăm. De obicei, pachetele cu biblioteci sunt numite la fel ca bibliotecile însele, cu prefixul lib.

Dacă ne lipsește biblioteca libfuse2.so, o putem găsi în Ubuntu cu această comandă:

$ sudo apt search libfuse2

Atunci singurul lucru care ne rămâne de făcut este să o instalăm:

$ sudo apt install libfuse2

Atunci când trebuie să construiți un program din sursă, va trebui să instalați și fișierele de antet:

$ sudo apt install libfuse-dev

Și la fel pentru orice bibliotecă. Dar acest lucru nu funcționează întotdeauna.

Biblioteca este în catalogul greșit

În practică, există cazuri în care biblioteca este instalată, dar eroarea persistă și nu permite utilizatorilor să interacționeze normal cu sistemul. Ce trebuie să faceți într-un astfel de caz? Mai întâi de toate, verificați încărcătorul de boot Linux care nu poate găsi biblioteca. Căutarea trebuie efectuată în directoarele specificate în fișierele de configurare /etc/ld.conf.d/. De regulă, acestea sunt /usr/lib, /lib, /usr/lib64, /lib64. Dacă biblioteca este instalată într-un alt director, aceasta este evident rădăcina problemei.

Puteți vedea ce biblioteci sunt disponibile în prezent pentru încărcător folosind comanda:

$ ldconfig -p

Găsiți unde se află biblioteca dvs. utilizând comanda locate. De exemplu, suntem interesați de biblioteca librtfreader.so:

$ locate librtfreader

Când știm locația /opt/kingsoft/wps-office/office6/, trebuie să facem posibilă detectarea bibliotecii de către încărcător. Adăugăm calea /etc/ld.so.conf.d/ la fișierul de configurare sau la variabila LD_LIBRARY_PATH:

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

Puteți instala cu orice bibliotecă care invocă eroarea. De asemenea, puteți urma calea mai puțin complicată de creare a unei legături simbolice către biblioteca corectă în directorul corect:

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

Versiune invalidă a bibliotecii

Acest lucru se întâmplă de obicei atunci când utilizați programe pentru o distribuție pe care nu o aveți instalată. Fiecare bibliotecă are o versiune suplimentară, care este scrisă după extensia .so. De exemplu, libav.so.1. Numărul versiunii se schimbă ori de câte ori o bibliotecă este patchată.

Se întâmplă adesea ca într-o distribuție un program să fie construit cu o dependență de bibliotecă, cum ar fi libc .so.1, iar într-o altă distribuție să existe doar libc.so.2. În majoritatea cazurilor, diferențele sunt mici și programul ar putea rula pe a doua versiune a bibliotecii. Astfel, putem crea pur și simplu o legătură simbolică către aceasta.

De exemplu, nu există biblioteca libusb-1.0.so.1. Dar există libusb-1.0.so.0.1, iar noi o putem utiliza:

Pentru a face acest lucru, creăm pur și simplu o legătură simbolică la bibliotecă:

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

Adesea, programul nu va observa substituirea și va funcționa. Ca soluție inteligentă, încercați să găsiți pe Internet versiunea corectă a bibliotecii pentru arhitectura dvs. și plasați-o în folderul /usr/lib/ sau /usr/lib64/. Dar după aceea este de dorit să actualizați cache-ul:

$ sudo ldconfig

Dacă problema persistă după acești pași, este recomandat să consultați documentația programului sau a sistemului de operare pentru informații mai detaliate cu privire la versiunile de bibliotecă necesare și la modul de instalare a acestora.