Бібліотеки 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 імена пакетів бібліотек відповідають імені потрібної бібліотеки. Тому щоб визначити точне ім`я в більшості випадків досить скористатися пошуком по базі пакетів:
Як бачите, знайдено два варіанти бібліотеки, 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 /
Потім поновіть кеш просто виконавши:
Тепер ваша бібліотека може бути завантажена програмою, наприклад, ви можете додати шлях / opt / lib або навіть / home / user / lib. І система буде нормально вантажити звідти бібліотеки.
Подивитися які бібліотеки знаходяться в кеші ld.cache можна командою:
$ Ldconfig -p | grep libjpegЩе один спосіб вказати програмі де потрібно шукати бібліотеки - це змінна LD_LIBRARY_PATH. наприклад:
- Установка програм через wine - winewizard
- Як запустити програми windows на linux
- Програмування під linux
- Портативні програми в linux
- Як встановити tar gz в ubuntu
- Що нового в ubuntu 16.10
- Як зробити попередній перегляд зображень на jаvascript.
- Команда rundll32 - виконати функцію, експортовану бібліотекою dll.
- Установка steam в ubuntu 16.04
- Установка avidemux в ubuntu 16.04
- Установка php 7 в linux
- Розроблена перша призначена для користувача тема для unity 8
- Scripty2 - jаvascript бібліотека для приголомшливих анімацій.
- Бібліотека d3js. Робимо круті 3d і 2d об`єкти.
- Установка qt ubuntu 16.04
- Бібліотеки linux
- Установка тим в ubuntu 16.04
- Помилка сегментування ubuntu
- jаvascript бібліотека is.js.
- Установка intellij idea на ubuntu 16.04
- Налаштування unity в ubuntu 16.04