Ubuntuda kutubxonalarni o‘rnatish. Odatda, yangi dasturlarni o‘rnatish uchun distributiv paketingiz menejeridan foydalansangiz, kutubxonalar avtomatik ravishda o‘rnatiladi. Ammo agar siz dasturni manbadan yaratmoqchi bo‘lsangiz yoki 64 bitli tizimda 32 bitli dasturni ishga tushirmoqchi bo‘lsangiz, muammolar boshlanishi mumkin. Masalan, dasturni ishga tushirish yoki kompilyatsiya qilishda siz xatoga duch kelasiz:
error while loading shared libraries: xxxx.so.0
cannot open shared object file no such file or directory
Odatda, Ubuntuda kutubxona paketi nomlari kerakli kutubxona nomiga mos keladi. Shuning uchun, aksariyat hollarda aniq nomni aniqlash uchun paketlar ma'lumotlar bazasida qidiruvdan foydalanish kifoya:
$ apt search libfuse
Ko‘rib turganingizdek, kutubxonaning ikkita varianti topildi, libfuse2 va libfuse-dev.
Agar kutubxona oddiy dasturga kerak bo‘lsa va uni manbadan qurish kerak bo‘lmasa, ubuntu kutubxonasini dev prefiksisiz o‘rnatish kifoya qiladi. Masalan:
$ sudo apt install libfuse2
Agar siz manbadan dastur yaratishingiz kerak bo‘lsa, odatiy kutubxonaga qo‘shimcha ravishda kutubxonada amalga oshirilgan funksiyalar tavsifini o‘z ichiga olgan sarlavha fayllari kerak bo‘ladi. Bunday paketlarda dev prefiksi mavjud, masalan, libfuse-dev, keyin siz ushbu paketni o‘rnatishingiz kerak va u allaqachon o‘rnatilmagan bo‘lsa, odatiy kutubxonani bog‘liqliklarga tortib oladi:
$ sudo apt install libfuse-dev
64 bitli tizimda 32 bitli dasturni ishga tushirishingiz kerak bo‘lgan vaziyat juda ko‘p muammolarni keltirib chiqarishi mumkin. Misol uchun, agar siz kutubxonaning 64-bitli versiyasini o‘rnatgan bo‘lsangiz va dastur hali ham uni topa olmayotganligini aytsa, ehtimol bu 32-bitli dastur va unga 32-bitli kutubxona kerak bo‘lishi mumkin. Agar dastur paket menejeri yordamida o‘rnatilmagan bo‘lsa, kutubxonalarni qo‘lda ham o‘rnatishingiz kerak bo‘ladi.
Ikkilik faylning bit kengligini fayl yordam dasturidan foydalanib ko‘rishingiz mumkin:
file /usr/bin/skype
Skrinshotda dasturning chiqishi uchun ikkita variant ko‘rsatilgan, 32 bit uchun, bizning holatlarimizda Skype va 64 - o‘rnatish uchun.
Ubuntu kutubxonasini i386 arxitekturasi bilan o‘rnatish uchun avval dpkgga i386 arxitekturasini qo‘llab-quvvatlashni qo‘shishingiz kerak:
$ sudo dpkg --add-architecture i386
Keyin biz omborlarimizni yangilaymiz:
$ sudo apt update
Va kutubxonani o‘rnatish paytida sizga kerak bo‘ladi, endi siz paket nomidan keyin ikki nuqta bilan ajratilgan arxitekturani ko‘rsatishingiz kerak:
$ sudo apt install libfuse-dev:i386
Agar kutubxona o‘rnatilganligiga ishonchingiz komil bo‘lsa, lekin dastur hali ham bunday kutubxona yo‘qligini aytsa, unda kutubxonaning boshqa versiyasi kerak bo‘lishi mumkin. Misol uchun, tizimda libudev.so.0 mavjud, ammo dasturga libudev.so.0.1 kerak. Bu ayniqsa, Red Hat tizimlarida boshqa distributivlar uchun paketni o‘rnatishga harakat qilsangiz sodir bo‘ladi. Agar kutubxonaning kerakli versiyasi omborlarda bo‘lmasa, ular bir xil bo‘lishi mumkin va siz shunchaki ramziy havola yaratishingiz mumkin:
ln -s /lib/libudev.so.0 /lib/libudev.so.0.1
Keyin dastur kerakli kutubxonani topadi.
Linux kutubxonasini boshqarish. Ubuntu kutubxonalarini o‘rnatish allaqachon yoritilgan, lekin men yana bir nechta fikrlarni eslatib o‘tmoqchiman. Aytganimdek, ubuntu kutubxonalari ma'lum kataloglarga joylashtirilgan, ammo kutubxonalarning joylashuvini sozlash mumkin.
Kutubxonani dasturga ulashdan oldin uni tizimda maxsus dastur - kutubxona menejeri topish kerak. U /etc/ld.cache faylidan kutubxonalar manzillarini oladi va bu fayl /etc/ld.so.conf konfiguratsiya fayllari asosida ldconfig yordam dasturi tomonidan yaratilgan.
Ushbu fayl kutubxonaning barcha yo‘llarini ko‘rsatadi. Agar siz o‘zingizning kutubxonangiz jildini qo‘shmoqchi bo‘lsangiz, uni ushbu faylga qo‘shing:
$ vi /etc/ld.so.conf
...
/opt/lib/
Keyin keshni oddiygina ishga tushirish orqali yangilang:
$ ldconfig
Endi sizning kutubxonangiz dastur tomonidan yuklanishi mumkin, masalan, siz / opt / lib yoki hatto / home / user / lib ni qo‘shishingiz mumkin. Tizim odatda kutubxonalarni u yerdan yuklaydi.
Siz ld.cache keshida qaysi kutubxonalar borligini buyruq bilan ko‘rishingiz mumkin:
$ ldconfig -p
Shuningdek, u erda ma'lum kutubxona mavjudligini tekshirishimiz mumkin:
$ ldconfig -p | grep libjpeg
Dasturga kutubxonalarni qaerdan qidirish kerakligini aytishning yana bir usuli LD_LIBRARY_PATH o‘zgaruvchisidir. Masalan:
export LD_LIBRARY_PATH=/home/user/lib/
Do'stlaringiz bilan baham: |