Начини на плащане Abuse

Ошибка грешка при зареждане на споделени библиотеки

21.02.2024, 22:45

Потребителите на Linux често се сблъскват с грешката при зареждане на споделени библиотеки при стартиране на програми, а тя е позната и на много програмисти и на всички, които искат да компилират софтуер в своята система. Буквално тя означава, че има проблем при зареждането на споделени библиотеки.

Повече за грешката Error while loading shared libraries (Грешка при зареждане на споделени библиотеки)

Грешка"грешка при зареждане на споделени библиотеки" означава, че при стартиране на програма или скрипт операционната система не е могла да намери и зареди една или повече библиотеки, които са необходими за работата на тази програма. Това е често срещан проблем в операционните системи, подобни на UNIX. Когато дадена програма се компилира, тя може да се позовава на различни външни библиотеки, които трябва да са налични по време на изпълнение. Ако тези библиотеки липсват или не са налични, се появява грешка при зареждането на споделените библиотеки.

Дори и да не компилирате програмите си, тази грешка може да се появи: име на директория: не може да се отвори файл със споделен обект: Няма такъв файл или директория доста често, когато инсталирате нови програми не чрез мениджъра на пакети или програми, предназначени за друга дистрибуция. Тя се появява, защото системата не може да намери библиотеката. Защо тя не може да бъде намерена и заредена?

Няколко причини, като обикновено всичко се свежда до библиотека, която:

  • не е инсталирана в системата;
  • е инсталирана, но е на грешното място;
  • е инсталирана правилно, но има грешна версия.

При решаването на проблема ще се ръководим от тези причини и ще се опитаме да ги решим.

Как да поправите грешката Error loading shared libraries (Грешка при зареждане на споделени библиотеки)?

След това нека разгледаме конкретни примери за решаване на този проблем въз основа на причините, споменати в предишния параграф.

Библиотеката не е инсталирана

Тук няма нищо сложно и всичко е съвсем ясно - библиотеката просто не присъства в системата, поради което получаваме тази грешка. Ето защо трябва да намерим пакета с библиотеката с помощта на мениджър на пакети и да го инсталираме. Обикновено пакетите с библиотеки се наричат по същия начин, както и самите библиотеки, с префикс lib.

Ако ни липсва библиотеката libfuse2.so, можем да я намерим в Ubuntu с тази команда:

$ sudo apt search libfuse2

След това единственото, което остава да направим, е да я инсталираме:

$ sudo apt install libfuse2

Когато трябва да сглобите програма от изходния код, ще трябва да инсталирате и заглавните файлове:

$ sudo apt install libfuse-dev

И така за всяка библиотека. Но това невинаги работи.

Библиотеката е в грешен каталог

В практиката има случаи, когато библиотеката е инсталирана, но грешката продължава и не позволява на потребителите да взаимодействат нормално със системата. Какво да се направи в такъв случай? На първо място, проверете зареждащия модул на Linux, който не може да намери библиотеката. Търсенето трябва да се извърши в директориите, посочени в конфигурационните файлове /etc/ld.conf.d/. По правило това са /usr/lib, /lib, /usr/lib64, /lib64. Ако библиотеката е инсталирана в друга директория, това очевидно е причината за проблема.

Можете да видите кои библиотеки са достъпни за зареждащия модул в момента, като използвате командата:

$ ldconfig -p

Намерете къде се намира вашата библиотека, като използвате командата locate. Например ние се интересуваме от библиотеката librtfreader.so:

$ locate librtfreader

Когато знаем местонахождението на /opt/kingsoft/wps-office/office6/, трябва да направим така, че зареждащият модул да открие библиотеката. Добавяме пътя /etc/ld.so.conf.d/ към конфигурационния файл или към променливата LD_LIBRARY_PATH:

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

Можете да инсталирате с всяка библиотека, която предизвиква грешка. Можете също така да изберете по-малко сложния път, като създадете символна връзка към правилната библиотека в правилната директория:

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

Неправилна версия на библиотеката

Това обикновено се случва, когато използвате програми за дистрибуция, която не сте инсталирали. Всяка библиотека има допълнителна версия, която се изписва след разширението .so. Например, libav.so.1. Номерът на версията се променя всеки път, когато библиотеката се обновява.

Често се случва в една дистрибуция дадена програма да е изградена със зависимост от библиотека, например libc .so.1, а в друга дистрибуция да има само libc.so.2. В повечето случаи разликите тук са малки и програмата може да работи с втората версия на библиотеката. Така че можем просто да създадем символна връзка към нея.

Например, няма библиотека libusb-1.0.so.1. Но има libusb-1.0.so.0.1 и ние можем да я използваме:

За да направим това, просто създаваме символна връзка към библиотеката:

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

Често програмата няма да забележи замяната и ще работи. Като интелигентно решение, опитайте се да намерите в интернет правилната версия на библиотеката за вашата архитектура и я поставете в папката /usr/lib/ или /usr/lib64/. Но след това е желателно да актуализирате кеша:

$ sudo ldconfig

Ако проблемът продължава след тези стъпки, препоръчваме да се обърнете към документацията на програмата или операционната система за по-подробна информация относно необходимите версии на библиотеките и начина на инсталирането им.