Бібліотеки ubuntu 16.04

Як ви знаєте кожна програма, встановлена ​​на вашому комп`ютері, складається з декількох частин. Це безпосередньо виконуваний файл, який ви запускаєте через термінал, а також бібліотеки з набором функцій, які може використовувати програма.

Відео: Unity-панель, budgie-desktop і інші настройки ubuntu 16.04 lts

Всі, без винятку, програми використовують бібліотеки. Навіть якщо це ваша програма і у неї немає своїх бібліотек, вона використовує стандартну бібліотеку мови програмування С.

У цій статті ми детально розглянемо що таке бібліотеки Ubuntu, як їх встановлювати, де брати і що робити якщо бібліотека встановлена, а програма говорить що її немає. Ми не будемо чіпати створення бібліотек, це зовсім не наша тема. Як завжди, почнемо з теорії.

Що таке бібліотеки

Бібліотеки в Linux містять набори функцій або якщо сказати простіше алгоритмів або дій для вирішення певних завдань. Наприклад, якщо програмі потрібно вивести рядок на екран вона не починає сама зафарбовувати потрібні пікселі, а просто звертається до відповідальної за це функції з бібліотеки, то ж саме якщо програмі потрібно прочитати вміст файлу, вона не працює з секторами жорсткого диска, їй досить викликати функцію зі стандартної бібліотеки с (libc.so) і передати їй в параметрах ім`я потрібного файлу, а бібліотека вже поверне їй запитувані дані.

Насправді, така структура реалізації програмного забезпечення дуже вигідна, оскільки досить написати алгоритм лише один раз і його зможуть використовувати всі програми просто завантажуючи бібліотеку.

Не потрібно думати що бібліотеки є тільки в Linux, в Windows вони теж є, тільки мають інший формат і розширення dll. У Linux же все бібліотеки знаходяться в папах / lib /, / usr / lib, / usr / local / lib або для 64 бітних систем також з`являється папка lib64 у всіх цих підкаталогах, для бібліотек специфічних для цієї архітектури. Бібліотека має розширення .so і її назва починається зі слова lib. Наприклад, libfuse.so, libc.so.

Далі, після розширення файлу .so йде номер версії бібліотеки. Номер версії змінюється щоразу, коли розробники вносять до неї зміни ламають сумісність з усіма розрахованими на неї програмами. В такому випадку в системі будуть вже дві бібліотеки і кожна програма буде використовувати правильну версію. Наприклад, glibc.so.6 і glibc.so.5.




Якщо цікаво можна навіть подивитися які бібліотеки і будь версій, використовує та чи інша програма, наприклад:

linux-vdso.so.1 (0x00007ffd99167000)
libmount.so.1 = gt; /usr/lib64/libmount.so.1 (0x00007f0f6beb0000)
libc.so.6 = gt; /lib64/libc.so.6 (0x00007f0f6bb08000)
libblkid.so.1 = gt; /usr/lib64/libblkid.so.1 (0x00007f0f6b8c8000)
libselinux.so.1 = gt; /lib64/libselinux.so.1 (0x00007f0f6b6a4000)
/lib64/ld-linux-x86-64.so.2 (0x000055aca8227000)
libuuid.so.1 = gt; /usr/lib64/libuuid.so.1 (0x00007f0f6b49f000)
libpcre.so.1 = gt; /usr/lib64/libpcre.so.1 (0x00007f0f6b238000)
libdl.so.2 = gt; /lib64/libdl.so.2 (0x00007f0f6b034000)
libpthread.so.0 = gt; /lib64/libpthread.so.0 (0x00007f0f6ae17000)

Також ця інформація може бути корисна при створенні портативних версій програм. А тепер давайте розглянемо як встановлюються бібліотеки в Ubuntu 16.04.

Відео: World of Tanks BLITZ на Ubuntu Gnome 16.04

Установка бібліотек в Ubuntu

Зазвичай, якщо ви використовуєте менеджеру пакунків дистрибутива для установки нових програм, то бібліотеки встановлюються автоматично. Але якщо ви хочете зібрати програму з початкових кодів або запустити 32 бітну програму на 64 бітної системі можуть початися проблеми. Наприклад, при запуску або компіляції програми ви отримуєте помилку:


can not open shared object file no such file or directory

Зазвичай, в Ubuntu імена пакетів бібліотек відповідають імені потрібної бібліотеки. Тому щоб визначити точне ім`я в більшості випадків досить скористатися пошуком по базі пакетів:

$ Apt search libfuse


Як бачите, знайдено два варіанти бібліотеки, libfuse2 і libfuse-dev.

Якщо бібліотека потрібна звичайній програмі і її не потрібно збирати з вихідних, то буде досить встановити бібліотеку ubuntu без префікса dev. наприклад:

$ Sudo apt install libfuse-dev

Багато проблем може викликати ситуація, коли вам потрібно запустити 32 бітну програму в 64 бітної системи. Наприклад, якщо ви встановили 64 бітну версію бібліотеки, а програма все одно говорить про те, що не може її знайти, можливо це 32 бітна програма і їй необхідна саме 32 бібліотека. Якщо програма не встановлюється за допомогою пакетного менеджера, вам теж доведеться встановлювати бібліотеки вручну.

Подивитися розрядність бінарники можна за допомогою утиліти file:

$ Sudo dpkg --add-architecture i386

Потім оновлюємо наші репозиторії:

$ Sudo apt install libfuse-dev: i386

Якщо ви впевнені, що бібліотека встановлена, але програма все одно каже, що такої бібліотеки немає, то можливо, їй просто потрібна інша версія бібліотеки. Наприклад, в системі є libudev.so.0, а програмі потрібна libudev.so.0.1. Таке трапляється, якщо ви спробуєте встановити пакет для іншого дистрибутива, особливо в Red Hat системах. Якщо в репозиторіях немає потрібної версії бібліотеки, то швидше за все, вони однакові, і можна просто створити символічне посилання:

$ Vi /etc/ld.so.conf
/ Opt / lib /

Потім поновіть кеш просто виконавши:

$ ldconfig

Тепер ваша бібліотека може бути завантажена програмою, наприклад, ви можете додати шлях / opt / lib або навіть / home / user / lib. І система буде нормально вантажити звідти бібліотеки.

Подивитися які бібліотеки знаходяться в кеші ld.cache можна командою:

$ Ldconfig -p | grep libjpeg

Ще один спосіб вказати програмі де потрібно шукати бібліотеки - це змінна LD_LIBRARY_PATH. наприклад:

Поділися в соціальних мережах:

Схожі
Установка тим в ubuntu 16.04Установка тим в ubuntu 16.04
Установка avidemux в ubuntu 16.04Установка avidemux в ubuntu 16.04
Команда rundll32 - виконати функцію, експортовану бібліотекою dll.Команда rundll32 - виконати функцію, експортовану бібліотекою dll.
Установка програм через wine - winewizardУстановка програм через wine - winewizard
Установка steam в ubuntu 16.04Установка steam в ubuntu 16.04
Програмування під linuxПрограмування під linux
Установка gcc в ubuntu 16.04Установка gcc в ubuntu 16.04
Налаштування unity в ubuntu 16.04Налаштування unity в ubuntu 16.04
Розроблена перша призначена для користувача тема для unity 8Розроблена перша призначена для користувача тема для unity 8
Як зробити попередній перегляд зображень на jаvascript.Як зробити попередній перегляд зображень на jаvascript.
» » Бібліотеки ubuntu 16.04