Maksājuma metodes Abuse

Ошибка kļūda koplietojamo bibliotēku ielādes laikā

21.02.2024, 22:45

Linux lietotāji bieži sastopas ar koplietojamo bibliotēku ielādes kļūdu, kad palaiž programmas, un to pazīst arī daudzi programmētāji un visi, kas vēlas kompilēt programmatūru savā sistēmā. Tas burtiski nozīmē, ka ir radusies problēma koplietojamo bibliotēku ielādes laikā.

Vairāk par kļūdu kļūda koplietojamo bibliotēku ielādes laikā

Kļūda"kļūda koplietojamo bibliotēku ielādēšanas laikā" nozīmē, ka, darbinot programmu vai skriptu, operētājsistēma nav varējusi atrast un ielādēt vienu vai vairākas bibliotēkas, kas ir nepieciešamas šīs programmas darbībai. Tā ir bieži sastopama problēma UNIX līdzīgās operētājsistēmās. Kad programma tiek kompilēta, tā var atsaukties uz dažādām ārējām bibliotēkām, kurām jābūt pieejamām darbības laikā. Ja šo bibliotēku nav vai tās nav pieejamas, koplietojamo bibliotēku ielādes laikā rodas kļūda.

Pat ja programmas netiek kompilētas, šī kļūda var parādīties: directory_name: cannot open shared object file: No such file or directory (direktorijas_nosaukums: nevar atvērt koplietojamo objektu failu: Nav šāda faila vai direktorijas ) diezgan bieži, instalējot jaunas programmas, kas nav instalētas, izmantojot pakotņu pārvaldnieku, vai programmas, kas paredzētas citai izplatīšanai. Tā rodas tāpēc, ka sistēma nevar atrast bibliotēku. Kāpēc to nevar atrast un ielādēt?

Vairāki iemesli, parasti tas ir saistīts ar bibliotēku, kas:

  • nav instalēta sistēmā;
  • ir instalēta, bet tā atrodas nepareizā vietā;
  • ir pareizi instalēta, bet tai ir nepareiza versija.

Risinot problēmu, vadīsimies pēc šiem iemesliem un mēģināsim tos atrisināt.

Kā novērst koplietojamo bibliotēku ielādes kļūdas kļūdu?

Tālāk aplūkosim konkrētus piemērus šīs problēmas risināšanai, pamatojoties uz iepriekšējā punktā minētajiem iemesliem.

Bibliotēka nav instalēta

Šeit nav nekas sarežģīts, un viss ir pilnīgi skaidrs - bibliotēka vienkārši nav sistēmā, tāpēc mēs saņemam šo kļūdu. Tāpēc mums ir jāatrod bibliotēkas pakotne ar pakotņu pārvaldnieka palīdzību un tā jāinstalē. Parasti paketes ar bibliotēkām sauc tāpat kā pašas bibliotēkas ar prefiksu lib.

Ja mums trūkst bibliotēkas libfuse2.so, mēs to varam atrast Ubuntu, izmantojot šo komandu:

$ sudo apt search libfuse2

Tad atliek tikai to instalēt:

$ sudo apt install libfuse2

Ja jums ir nepieciešams izveidot programmu no pirmkoda, jums būs jāinstalē arī galvenes faili:

$ sudo apt install libfuse-dev

Un tā tas attiecas uz jebkuru bibliotēku. Bet tas ne vienmēr darbojas.

Bibliotēka ir nepareizajā katalogā

Praksē ir gadījumi, kad bibliotēka ir instalēta, bet kļūda saglabājas un neļauj lietotājiem normāli sadarboties ar sistēmu. Ko darīt šādā gadījumā? Vispirms pārbaudiet Linux boot loader, kas nevar atrast bibliotēku. Meklēšana jāveic konfigurācijas failos /etc/ld.conf.d/ norādītajos direktorijos. Parasti tie ir /usr/lib, /lib, /usr/lib64, /lib64. Ja bibliotēka ir instalēta citā direktorijā, tas acīmredzot ir problēmas cēlonis.

Jūs varat redzēt, kādas bibliotēkas pašlaik ir pieejamas ielādētājam, izmantojot komandu:

$ ldconfig -p

Atrodiet, kur atrodas jūsu bibliotēka, izmantojot komandu locate. Piemēram, mūs interesē bibliotēka librtfreader.so:

$ locate librtfreader

Kad mēs zinām, kur atrodas /opt/kingsoft/wps-office/office6/, mums jānodrošina, lai ielādētājs varētu noteikt šo bibliotēku. Mēs pievienojam ceļu /etc/ld.so.conf.d/ konfigurācijas datnei vai mainīgajam LD_LIBRARY_PATH:

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

Var instalēt ar jebkuru bibliotēku, kas izraisa kļūdu. Variet izmantot arī mazāk sarežģīto ceļu, izveidojot simbolisku saiti uz pareizo bibliotēku pareizajā direktorijā:

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

Nepareiza bibliotēkas versija

Tas parasti notiek, ja tiek izmantotas programmas, kas paredzētas izplatīšanai, kura nav instalēta. Katrai bibliotēkai ir papildu versija, kas tiek rakstīta pēc paplašinājuma .so. Piemēram, libav.so.1. Versijas numurs mainās ikreiz, kad bibliotēka tiek labota.

Bieži gadās, ka vienā izplatījumā programma ir uzbūvēta ar bibliotēkas atkarību, piemēram, libc .so.1, bet citā izplatījumā ir tikai libc.so.2. Vairumā gadījumu atšķirības šeit ir nelielas, un programma var darboties ar otro bibliotēkas versiju. Tāpēc mēs varam vienkārši izveidot simbolisku saiti uz to.

Piemēram, nav bibliotēkas libusb-1.0.so.1. Bet ir libusb-1.0.so.0.1, un mēs to varam izmantot:

Lai to izdarītu, mēs vienkārši izveidojam simbolisku saiti uz bibliotēku:

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

Bieži vien programma šo aizvietošanu nepamanīs un darbosies. Kā gudrāku risinājumu izmēģiniet internetā atrast savai arhitektūrai atbilstošo bibliotēkas versiju un ievietojiet to mapē /usr/lib/ vai /usr/lib64/. Bet pēc tam vēlams atjaunināt kešatmiņu:

$ sudo ldconfig

Ja pēc šiem soļiem problēma saglabājas, ieteicams iepazīties ar programmas vai operētājsistēmas dokumentāciju, lai iegūtu sīkāku informāciju par nepieciešamajām bibliotēku versijām un to instalēšanas kārtību.