Linux как установить библиотеку в

Linux как установить библиотеку в

Краткая инструкция по установке всех нужных для курса библиотек в Ubuntu

Содержание

На Linux рекомендуется использовать:

Студенты могут получить бесплатную лицензию на CLion, используя скан студенческого билета: jetbrains.com/student/

Библиотеки из основного репозитория

Множество C/C++ библиотек доступно в основном репозитории системы (предполагаем, что вы используете Ubuntu 16.04 LTS или старше). Следующие библиотеки используются в нашем курсе:

Команда для установки данных библиотек:

Библиотека glbinding

Библиотека даёт прозрачный доступ к современным версиям OpenGL: программист использует API нужной ему версии, а glbinding сам запросит адреса функций выбранной версии у видеодрайвера. Рекомендуется использовать glbinding вместо обычных заголовков OpenGL.

Пакеты распространяются в специальном ppa:

После этого в CMake вы можете использовать find_package:

Библиотека anax

Библиотека используется для построения архитектуры программы на принципах Component-Entity-System. Для сборки склонируйте репозиторий и в каталоге клона вызовите cmake:

Далее выполните команду checkinstall, чтобы создать DEB-пакет “libanax-dev-custom” и установить его.

Библиотека nlohmann-json

Библиотека используется для загрузки и сохранения JSON. Для сборки склонируйте репозиторий и в каталоге клона вызовите cmake:

Далее выполните команду checkinstall, чтобы создать DEB-пакет “libnlohmann-json-dev-custom” и установить его.

Если команда завершилась успешно, вы можете начать использовать #include в своих проектах.

Установка последней версии cmake

Зайдите на страницу загрузки (cmake.org) и скачайте пакет “Unix/Linux Source”. Распакуйте скачанный архив, перейдите в каталог и выполните следующие команды:

Далее выполните команду checkinstall, чтобы создать DEB-пакет “cmake-custom” и установить его. Также вам нужно удалить системный пакет cmake перед началом установки.

Установка последней версии clang

Вы можете скачать исходники LLVM/Clang из SVN и собрать, а затем установить с помощью checkinstall. Готовые скрипты для автоматизации этой задачи вы найдёте на странице gist.github.com/sergey-shambir/a075161d774e211e1a423826764c7d33 Для работы скриптов нужны установленные пакеты subversion, cmake и checkinstall.

Также вам нужно удалить системные пакеты llvm и clang перед началом установки.

Используем clang по всей системе

Если у вас установлен clang, вы можете включить его в качестве компилятора по умолчанию:

В появившемся консольном меню выберите clang:

Источник

Библиотеки в Ubuntu

Как вы знаете каждая программа, установленная на вашем компьютере, состоит из нескольких частей. Это непосредственно исполняемый файл, который вы запускаете через терминал, а также библиотеки с набором функций, которые может использовать программа.

Все, без исключения, программы используют библиотеки. Даже если это ваша программа и у нее нет своих библиотек, она использует стандартную библиотеку языка программирования С.

Читайте также:  Как установить зеркала политех на ваз 2114

В этой статье мы подробно рассмотрим что такое библиотеки Ubuntu, как их устанавливать, где брать и что делать если библиотека установлена, а программа говорит что ее нет. Мы не будем трогать создание библиотек, это совсем не наша тема. Как обычно, начнем с теории.

Что такое библиотеки

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

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

Если интересно можно даже посмотреть какие библиотеки и каких версий, использует та или иная программа, например:

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

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

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

Обычно, если вы используете менеджер пакетов вашего дистрибутива для установки новых программ, то библиотеки устанавливаются автоматически. Но если вы хотите собрать программу из исходников или запустить 32 битную программу на 64 битной системе могут начаться проблемы. Например, при запуске или компиляции программы вы получаете ошибку:

error while loading shared libraries: xxxx.so.0
cannot open shared object file no such file or directory

Обычно, в Ubuntu имена пакетов библиотек соответствуют имени нужной библиотеки. Поэтому чтобы определить точное имя в большинстве случаев достаточно воспользоваться поиском по базе пакетов:

apt search libfuse

Как видите, найдено два варианта библиотеки, libfuse2 и libfuse-dev.

Если библиотека нужна обычной программе и ее не нужно собирать из исходников, то будет достаточно установить библиотеку ubuntu без префикса dev. Например:

sudo apt install libfuse2

Если же вам нужно собрать приложение из исходников, то кроме обычной библиотеки понадобятся заголовочные файлы, в которых содержится описание реализованных в библиотеке функций. Такие пакеты имеют приставку dev, например, libfuse-dev, тогда нужно устанавливать этот пакет, а он уже в зависимостях потянет и обычную библиотеку, если она еще не установлена:

sudo apt install libfuse-dev

Много проблем может вызвать ситуация, когда вам нужно запустить 32 битную программу в 64 битной системе. Например, если вы установили 64 битную версию библиотеки, а программа все равно говорит о том, что не может ее найти, возможно это 32 битная программа и ей необходима именно 32 библиотека. Если программа не устанавливается с помощью пакетного менеджера, вам тоже придется устанавливать библиотеки вручную.

Читайте также:  Как установить двойную розетку в квартире

Посмотреть разрядность бинарника можно с помощью утилиты file:

Для того чтобы установить библиотеку Ubuntu с архитектурой i386 сначала необходимо добавить поддержку архитектуры i386 в dpkg:

Затем обновляем наши репозитории:

А во время установки нужной вам библиотеки теперь необходимо указать архитектуру через двоеточие после имени пакета:

sudo apt install libfuse-dev:i386

Если вы уверенны, что библиотека установлена, но программа все равно говорит, что такой библиотеки нет, то возможно, ей просто нужна другая версия библиотеки. Например, в системе есть libudev.so.0, а программе нужна libudev.so.0.1. Такое случается, если вы попытаетесь установить пакет для другого дистрибутива, особенно в Red Hat системах. Если в репозиториях нет нужной версии библиотеки, то скорее всего, они одинаковы, и можно просто создать символическую ссылку:

Затем программа найдет нужную библиотеку.

Управление библиотеками в Linux

Установка библиотек ubuntu уже рассмотрена, но хотелось бы упомянуть еще пару моментов. Как я сказал, библиотеки ubuntu размещаются в определенных каталогах, но расположение библиотек можно настроить.

В этом файле перечислены все пути к библиотекам. Если вы хотите добавить свою папку для библиотек просто добавьте ее в этот файл:

Затем обновите кэш просто выполнив:

Теперь ваша библиотека может быть загружена программой, например, вы можете добавить путь /opt/lib или даже /home/user/lib. И система будет нормально грузить оттуда библиотеки.

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

Также мы можем проверить находится ли там определенная библиотека:

Теперь программы, запускаемые в этом терминале, кроме стандартных путей поиска библиотек, будут использовать и указанную папку.

Выводы

Вот и все. Теперь вы знаете как работают библиотеки Ubuntu, как выполняется установка библиотек Ubuntu и делать так, чтобы программа видела нужную ей библиотеку. У новичков это может вызвать очень много головной боли, но теперь вы знаете что делать и избежите многих ошибок. Если у вас остались вопросы, пишите в комментариях!

Источник

Linux как установить библиотеку в

дЧПЙЮОБС УПЧНЕУФЙНПУФШ У Linux ОЕ ЧЛМАЮЕОБ РП ХНПМЮБОЙА. рТПУФЕКЫЙК УРПУПВ ЧЛМАЮЕОЙС ЬФПК ЖХОЛГЙПОБМШОПУФЙ ЪБЛМАЮБЕФУС Ч ЪБЗТХЪЛЕ KLD-ПВЯЕЛФБ linux ( Kernel LoaDable object >> ). чЩ НПЦЕФЕ ЪБЗТХЪЙФШ ЬФПФ НПДХМШ, ОБВТБЧ УМЕДХАЭЕЕ, ЛБЛ РПМШЪПЧБФЕМШ root :

еУМЙ ЧЩ ИПФЙФЕ, ЮФПВЩ УПЧНЕУФЙНПУФШ У Linux ВЩМБ ЧЛМАЮЕОБ РПУФПСООП, ОЕПВИПДЙНП ДПВБЧЙФШ Ч /etc/rc.conf УМЕДХАЭХА УФТПЛХ:

дМС РТПЧЕТЛЙ ФПЗП, ЪБЗТХЦЕО МЙ НПДХМШ, НПЦЕФ ВЩФШ ЙУРПМШЪПЧБОБ ЛПНБОДБ kldstat (8) :

еУМЙ РП ЛБЛПК-МЙВП РТЙЮЙОЕ ЧЩ ОЕ ИПФЙФЕ ЙМЙ ОЕ НПЦЕФЕ ЪБЗТХЪЙФШ KLD, ЧЩ НПЦЕФЕ УФБФЙЮЕУЛЙ ЧЛМАЮЙФШ РПДДЕТЦЛХ Linux Ч СДТП, ДПВБЧЙЧ ПРГЙА options COMPAT_LINUX Ч ЖБКМ ЛПОЖЙЗХТБГЙЙ СДТБ. ъБФЕН УПВЕТЙФЕ Й ХУФБОПЧЙФЕ ОПЧПЕ СДТП, УМЕДХС ПРЙУБОЙА Ч зМБЧБљ9, оБУФТПКЛБ СДТБ FreeBSD.

11.2.1. хУФБОПЧЛБ ОЕПВИПДЙНЩИ ВЙВМЙПФЕЛ Linux

хУФБОПЧЙФШ ЧУЕ ФТЕВХЕНЩЕ ВЙВМЙПФЕЛЙ НПЦОП ДЧХНС РХФСНЙ: МЙВП ЙУРПМШЪХС РПТФ linux_base, МЙВП ХУФБОПЧЙЧ ЙИ ЧТХЮОХА.

11.2.1.1. хУФБОПЧЛБ У РПНПЭША РПТФБ linux_base

ьФПФ НЕФПД СЧМСЕФУС УБНЩН РТПУФЩН, Й НЩ ТЕЛПНЕОДХЕН ЧПУРПМШЪПЧБФШУС ЙНЕООП ЙН. рТПГЕУУ БОБМПЗЙЮЕО ХУФБОПЧЛЕ МАВПЗП ДТХЗПЗП РПТФБ ЙЪ лПММЕЛГЙЙ рПТФПЧ. рТПУФП ЧЩРПМОЙФЕ УМЕДХАЭЙЕ ЛПНБОДЩ:

Читайте также:  Как установить блок бесперебойного питания

фЕРЕТШ ЧЩ НПЦЕФЕ ТБВПФБФШ У РТЙМПЦЕОЙСНЙ ДМС Linux. оЕЛПФПТЩЕ РТПЗТБННЩ, ЧПЪНПЦОП, ВХДХФ УППВЭБФШ П ОЕУППФЧЕФУФЧЙЙ РПДЧЕТУЙК ОЕЛПФПТЩИ УЙУФЕНОЩИ ВЙВМЙПФЕЛ. пДОБЛП ПВЩЮОП ЬФП ОЕ ЧЩЪЩЧБЕФ ЛБЛЙИ-МЙВП ОЕХДПВУФЧ.

рТЙНЕЮБОЙЕ:

чПЪНПЦОП ОБМЙЮЙЕ ОЕУЛПМШЛЙИ ЧЕТУЙК РПТФБ emulators/linux_base, УППФЧЕФУФЧХАЭЙИ ТБЪМЙЮОЩН ЧЕТУЙСН ТБЪОЩИ ДЙУФТЙВХФЙЧПЧ Linux. чЩ ДПМЦОЩ ХУФБОПЧЙФШ РПТФ, ОБЙВПМЕЕ ВМЙЪЛП УППФЧЕФУФЧХАЭЙК ФТЕВПЧБОЙСН РТЙМПЦЕОЙК Linux, ЛПФПТЩЕ ВХДХФ ХУФБОПЧМЕОЩ.

11.2.1.2. хУФБОПЧЛБ ВЙВМЙПФЕЛ ЧТХЮОХА

пВЩЮОП ЧБН РТЙДЕФУС ДПВБЧМСФШ УПЧНЕУФОП ЙУРПМШЪХЕНЩЕ ВЙВМЙПФЕЛЙ, ПФ ЛПФПТЩИ ЪБЧЙУСФ Linux-РТПЗТБННЩ, ФПМШЛП РТЙ ОЕУЛПМШЛЙИ РЕТЧЩИ ХУФБОПЧЛБИ РТЙМПЦЕОЙК Linux ОБ ЧБЫХ УЙУФЕНХ FreeBSD. рП НЕТЕ ТБВПФЩ, Х ЧБУ Ч УЙУФЕНЕ ОБЛПРЙФУС ДПУФБФПЮОЩК ОБВПТ УПЧНЕУФОП ЙУРПМШЪХЕНЩИ ВЙВМЙПФЕЛ Linux ДМС ЪБРХУЛБ ОПЧЩИ Linux-РТПЗТБНН ВЕЪ ДПРПМОЙФЕМШОЩИ ДЕКУФЧЙК.

11.2.1.3. лБЛ ХУФБОПЧЙФШ ДПРПМОЙФЕМШОЩЕ УПЧНЕУФОП ЙУРПМШЪХЕНЩЕ ВЙВМЙПФЕЛЙ

юФП, ЕУМЙ РТЙ ХУФБОПЧМЕООПН linux_base РПТФЕ ЧБЫЕ РТЙМПЦЕОЙЕ ЧУЕ ТБЧОП УППВЭБЕФ ПВ ПФУХФУФЧЙЙ ОЕПВИПДЙНПК ВЙВМЙПФЕЛЙ? лБЛ ХЪОБФШ, ЛБЛБС ЙНЕООП ОХЦОБ ВЙВМЙПФЕЛБ Й ЗДЕ ЕЕ ЧЪСФШ? ч РТЙОГЙРЕ, ЕУФШ ДЧБ УРПУПВБ. чБН ОЕПВИПДЙНП ЙНЕФШ РТЙЧЙМЕЗЙЙ РПМШЪПЧБФЕМС root ДМС ЙИ ПУХЭЕУФЧМЕОЙС.

еУМЙ Х ЧБУ ЕУФШ ДПУФХР Л НБЫЙОЕ, ОБ ЛПФПТПК ХУФБОПЧМЕО Linux, ХЪОБКФЕ, ЛБЛЙЕ ВЙВМЙПФЕЛЙ ЙУРПМШЪХЕФ Linux-РТЙМПЦЕОЙЕ, Й РТПУФП УЛПРЙТХКФЕ ЙЪ ОБ УЧПА НБЫЙОХ. тБУУНПФТЙН УМЕДХАЭЙК РТЙНЕТ:

чБН РПФТЕВХАФУС ЧУЕ ЖБКМЩ, РЕТЕЮЙУМЕООЩЕ Ч РПУМЕДОЕН УФПМВГЕ. уЛПРЙТХКФЕ ЙИ Ч ДЕТЕЧП /compat/linux ОБ ЧБЫЕК УЙУФЕНЕ, Б ФБЛЦЕ УПЪДБКФЕ УЙНЧПМЙЮЕУЛЙЕ УУЩМЛЙ ОБ ЬФЙ ЖБКМЩ У ЙНЕОБНЙ ЙЪ РЕТЧПЗП УФПМВГБ, УППФЧЕФУФЧЕООП. ч ЙФПЗЕ, Х ЧБУ Ч УЙУФЕНЕ FreeBSD ДПМЦОЩ ВЩФШ УМЕДХАЭЙЕ ЖБКМЩ:

рТЙНЕЮБОЙЕ:

хЮФЙФЕ, ЮФП ЕУМЙ Х ЧБУ ХЦЕ ЕУФШ УПЧНЕУФОП ЙУРПМШЪХЕНБС ВЙВМЙПФЕЛБ Linux У УППФЧЕФУФЧХАЭЙН РЕТЧПНХ УФПМВГХ ТЕЪХМШФБФПЧ ldd ПУОПЧОЩН ОПНЕТПН ЧЕТУЙЙ, ЧБН ОЕ ПВСЪБФЕМШОП ЛПРЙТПЧБФШ ЖБКМ, ХЛБЪБООЩК Ч РПУМЕДОЕН УФПМВГЕ, Ч ЧБЫХ УЙУФЕНХ. хЦЕ УХЭЕУФЧХАЭЙК ЖБКМ ДПМЦЕО РПДПКФЙ. тЕЛПНЕОДХЕФУС, ПДОБЛП, ЧУЕ ТБЧОП УЛПРЙТПЧБФШ УПЧНЕУФОП ЙУРПМШЪХЕНХА ВЙВМЙПФЕЛХ, ЕУМЙ ЕЕ ЧЕТУЙС ОПЧЕЕ. рТЕДЩДХЭХА ЧЕТУЙА ВЙВМЙПФЕЛЙ НПЦОП ХДБМЙФШ, ЕУМЙ ЧЩ УПЪДБМЙ УЙНЧПМЙЮЕУЛХА УУЩМЛХ ОБ ОПЧХА. йФБЛ, ЕУМЙ Х ЧБУ Ч УЙУФЕНЕ ЕУФШ УМЕДХАЭЙЕ ВЙВМЙПФЕЛЙ:

Й ЛБЛПЕ-МЙВП РТЙМПЦЕОЙЕ ФТЕВХЕФ ВЙВМЙПФЕЛХ ВПМЕЕ РПЪДОЕК ЧЕТУЙЙ, УХДС РП ТЕЪХМШФБФБН ЛПНБОДЩ ldd :

еУМЙ ЧЕТУЙЙ ОЕНОПЗП ПФМЙЮБАФУС Ч РПУМЕДОЕК ГЙЖТЕ, ЛПРЙТПЧБФШ /lib/libc.so.4.6.29 ОЕПВСЪБФЕМШОП, ФБЛ ЛБЛ РТПЗТБННБ, УЛПТЕЕ ЧУЕЗП, ВХДЕФ ОПТНБМШОП ТБВПФБФШ Й У ОЕНОПЗП ХУФБТЕЧЫЕК ЧЕТУЙЕК. фЕН ОЕ НЕОЕЕ, ЧЩ НПЦЕФЕ ЪБНЕОЙФШ libc.so :

рТЙНЕЮБОЙЕ:

уЙНЧПМЙЮЕУЛЙЕ УУЩМЛЙ ЧБЦОЩ ФПМШЛП ДМС Linux-РТПЗТБНН. Runtime-ЛПНРПОПЧЭЙЛ FreeBSD УБНПУФПСФЕМШОП РПДВЕТЕФ РТБЧЙМШОЩЕ ОПНЕТБ ЧЕТУЙК ВЙВМЙПФЕЛ, Й ЧБН ОЕ ОХЦОП ПВ ЬФПН ВЕУРПЛПЙФШУС.

11.2.2. хУФБОПЧЛБ ДЧПЙЮОЩИ ЖБКМПЧ Linux ELF

дМС ELF-ЖБКМПЧ ЙОПЗДБ ФТЕВХЕФУС УДЕМБФШ ФБЛ ОБЪЩЧБЕНЩК branding >> (НБТЛЙТПЧБФШ ЕЗП). еУМЙ РПРЩФБФШУС ЪБРХУФЙФШ ОЕ НБТЛЙТПЧБООЩК ELF-ЖБКМ, ЧЩ РПМХЮЙФЕ УМЕДХАЭЕЕ УППВЭЕОЙЕ ПВ ПЫЙВЛЕ:

юФПВЩ РПНПЮШ СДТХ FreeBSD ПФМЙЮЙФШ ELF-ЖБКМ FreeBSD ПФ ДЧПЙЮОПЗП ЖБКМБ Linux, ЙУРПМШЪХЕФУС ХФЙМЙФБ brandelf (1) :

ч ОБУФПСЭЕЕ ЧТЕНС ОБВПТ ЙОУФТХНЕОФБМШОЩИ УТЕДУФЧ GNU (GNU toolchain) РПНЕЭБЕФ ОЕПВИПДЙНХА НБТЛЙТПЧПЮОХА ЙОЖПТНБГЙА Ч ДЧПЙЮОЩЕ ELF-ЖБКМЩ БЧФПНБФЙЮЕУЛЙ, РПЬФПНХ ОЕПВИПДЙНПУФШ Ч ЬФПН ДЕКУФЧЙЙ ЧПЪОЙЛБЕФ ЧУЈ ТЕЦЕ.

11.2.3. лПОЖЙЗХТЙТПЧБОЙЕ ТБУРПЪОБЧБОЙС ЙНЕО ИПУФПЧ

еУМЙ DNS ОЕ ТБВПФБЕФ ЙМЙ ЧЩ РПМХЮБЕФЕ ЬФП УППВЭЕОЙЕ:

рТЕД.љ оБЧЕТИ љуМЕД.
зМБЧБ 11. дЧПЙЮОБС УПЧНЕУФЙНПУФШ У Linuxљ оБЮБМП љ11.3. хУФБОПЧЛБ Mathematica (R)

Источник

Поделиться с друзьями
Делаю сам
Adblock
detector