Төлем әдістері Abuse

Ортақ кітапханаларды жүктеу кезінде қате пайда болды

21.02.2024, 22:45

Linux пайдаланушылары бағдарламаларды іске қосу кезінде error loading shared libraries қатесіне жиі кездеседі және бұл көптеген бағдарламашыларға және өз жүйесінде бағдарламалық жасақтаманы құрастырғысы келетіндердің барлығына таныс. Ағылшын тілінен сөзбе-сөз аударғанда, бұл ортақ кітапхананы жүктеу кезінде ақаулық орын алғанын білдіреді.

Ортақ кітапханаларды жүктеу кезіндегі қате қатесі туралы қосымша мәліметтер

« error while loading shared libraries » қатесі бағдарламаны немесе сценарийді іске қосқан кезде операциялық жүйе бағдарламаның жұмыс істеуі үшін қажетті бір немесе бірнеше кітапхананы тауып, жүктей алмағанын білдіреді. Бұл UNIX тәрізді операциялық жүйелерде жиі кездесетін мәселе. Бағдарлама құрастырылған кезде, ол орындалу уақытында қолжетімді болуы керек әртүрлі сыртқы кітапханаларға сілтеме жасай алады. Бұл кітапханалар жоқ немесе қолжетімсіз болса, ортақ кітапханаларды жүктеу кезінде қате орын алады.

Бағдарламаларыңызды құрастырмасаңыз да, мына қатені көруіңіз мүмкін: directory_name: cannot open shared object file: No such file or directory . Бұл жүйе кітапхананы таба алмағандықтан орын алады. Неліктен оны табу және жүктеу мүмкін емес?

Бірнеше себептер бар, әдетте бәрі кітапханаға байланысты:

  • жүйеде орнатылмаған;
  • орнатылған, бірақ қайда екені белгісіз;
  • дұрыс орнатылған, бірақ нұсқасы дұрыс емес.

Мәселені шешу барысында біз осы себептерді басшылыққа алып, оларды шешуге тырысамыз.

Ортақ кітапханаларды жүктеу қатесін қалай түзетуге болады?

Әрі қарай, біз алдыңғы абзацта айтылған себептерге негізделген бұл мәселені шешудің нақты мысалдарын қарастырамыз.

Кітапхана орнатылмаған

Мұнда күрделі ештеңе жоқ және бәрі өте түсінікті - кітапхана жүйеде жоқ, сондықтан біз мұндай қатені аламыз. Сондықтан, мұны шешу үшін бума менеджері арқылы кітапхана бумасын тауып, оны орнату керек. Әдетте, кітапханалары бар бумалар 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

Егер бұл қадамдар мәселені шешпесе, қажетті кітапхана нұсқалары және оларды орнату жолы туралы толығырақ ақпарат алу үшін бағдарламаны немесе операциялық жүйе құжаттамасын қарауды ұсынамыз.