- Библиотеки
- Cairo
- glibc
- GNU C Library
- GtkPerf
- LibDWG
- Libinput
- libjpeg-turbo
- libzip
- linuxptp
- Ncurses
- Netpbm
- plibsys
- resvg
- RusXMMS
- SANE (Scanner Access Now Easy)
- Библиотека пакетов для linux
- Содержание
- Библиотеки из основного репозитория
- Библиотека glbinding
- Библиотека anax
- Библиотека nlohmann-json
- Установка последней версии cmake
- Установка последней версии clang
- Используем clang по всей системе
- Библиотеки в Ubuntu
- Что такое библиотеки
- Установка библиотек в Ubuntu
- Управление библиотеками в Linux
- Выводы
Библиотеки
BIRQ — это сокращение от Balance IRQs. Это программное обеспечение предназначено для балансировки прерываний между CPU на Linux в периоды высокой нагрузки.
Cairo
Cairo — это векторная графическая библиотека, двумерный графический инструментарий, разработанный, в основном, сотрудником Red Hat Карлом Вортом (Carl Worth) и Кейтом Пакардом (Keith Packard).
glibc
Стандартная библиотека языка Си из проекта GNU, предоставляющая системные вызовы и другие основные операторы для основных систем GNU/Linux.
GNU C Library
Библиотека, которая определяет системные вызовы и другие основные функции, такие как open, malloc, printf, exit.
GTK+ (сокращение от GIMP Toolkit) — мультиплатформенный инструментарий для создания графических интерфейсов пользователя. Наряду с Qt является одной из двух наиболее популярных на сегодняшний день библиотек для X Window System.
GtkPerf
Тестирование производительности GTK.
Системный сервис (демон), представлявший слой аппаратных абстракций для Linux систем.
LibDWG
LibDWG — это библиотека для работы с файлами в формате DWG, популярного формата для изображений, используемого в мире CAD.
Libinput
Библиотека работы с устройствами ввода в Wayland и универсальный драйвер ввода X.Org.
libjpeg-turbo
libjpeg-turbo — высокопроизводительная библиотека для кодирования и декодирования изображений в формате JPEG.
libzip
libzip — C-библиотека, ориентированная на создание, чтение и изменение zip-архивов.
linuxptp
linuxptp — это реализация протокола Precision Time Protocol (PTP) в соответствии со стандартом IEEE 1588 для Linux.
Ncurses
Ncurses — библиотека (аналог библиотеки crt в Pascal) предназначена для управления вводом/выводом на терминал. Она позволяет программисту не беспокоиться об аппаратных различиях терминалов и писать достаточно портируемый код.
Netpbm
Netpbm — пакет графических программ и библиотека с открытым исходным кодом, используемые в основном в мире Unix. Это хорошо переносимое приложение, работающее на многих Unix-системах.
plibsys
plibsys — это кросс-платформенная системная библиотека, написанная на чистом C.
Popt — подсистема RPM, мощная библиотека для обработки сложных сочетаний опций командной строки. Вы можете настроить RPM таким образом, что определенные вами псевдонимы popt позволят задать нужную реакцию утилит rpm и rpmbuild. Псевдоним (алиас) popt — это опция командной строки, которая разворачивается в другие опции.
Qt — это универсальная библиотека на языке C++, разработанная компанией Trolltech для создания кроссплатформенных приложений. На этой библиотеке построена графическая среда KDE. Она полностью отвечает за внешний вид и восприятие среды KDE, равно как и за разнообразие ее возможностей.
resvg
resvg 0.3 — библиотека отрисовки SVG.
RusXMMS
Библиотека RusXMMS работает со списками воспроизведения проигрывателя XMMS, но может быть полезной для любой программы, работающей с текстами, набранными в разных кодировках на разных языках.
SANE (Scanner Access Now Easy)
Удобный интерфейс прикладного программирования (API).
Источник
Библиотека пакетов для linux
Краткая инструкция по установке всех нужных для курса библиотек в Ubuntu
Содержание
На Linux рекомендуется использовать:
- последнюю версию компилятора clang
- последнюю версию системы сборки cmake
- среду разработки CLion либо QtCreator
Студенты могут получить бесплатную лицензию на CLion, используя скан студенческого билета: jetbrains.com/student/
Библиотеки из основного репозитория
Множество C/C++ библиотек доступно в основном репозитории системы (предполагаем, что вы используете Ubuntu 16.04 LTS или старше). Следующие библиотеки используются в нашем курсе:
- sdl2, sdl2-image, sdl2-mixer, sdl2-ttf в целях абстрагирования от операционной системы для создания окон, растеризации текстовых надписей, загрузки изображений с диска, загрузки и проигрывания звуковых файлов
- assimp3 для загрузки 3D моделей из множества форматов файлов
- bullet3 для расчёта столкновений в 3D пространстве
- tinyxml2 для загрузки XML
- glm для работы с линейной алгеброй в рамках задач 3D графики
Команда для установки данных библиотек:
Библиотека 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: sudo apt-get remove cmake .
Зайдите на страницу загрузки (cmake.org) и скачайте пакет “Unix/Linux Source”. Распакуйте скачанный архив, перейдите в каталог и выполните следующие команды:
Далее выполните команду checkinstall, чтобы создать DEB-пакет “cmake-custom” и установить его. Также вам нужно удалить системный пакет cmake перед началом установки.
Если скрипт завершился успешно, проверьте версию cmake в системе командой cmake —version :
Установка последней версии clang
Вы можете скачать исходники LLVM/Clang из SVN и собрать, а затем установить с помощью checkinstall. Готовые скрипты для автоматизации этой задачи вы найдёте на странице gist.github.com/sergey-shambir/a075161d774e211e1a423826764c7d33 Для работы скриптов нужны установленные пакеты subversion, cmake и checkinstall.
- скрипт get_clang.sh скачивает исходный код LLVM/Clang и собирает через CMake
- скрипт install_clang.sh должен быть запущен через sudo, он соберёт и установит DEB-пакет “llvm-clang-custom”
- файлы postinstall-pak и preremove-pak должны находиться рядом с install_clang.sh при сборке пакета
Также вам нужно удалить системные пакеты llvm и clang перед началом установки.
Если оба скрипта завершились успешно, проверьте версию clang в системе командой clang++ —version :
Используем clang по всей системе
Если у вас установлен clang, вы можете включить его в качестве компилятора по умолчанию:
В появившемся консольном меню выберите clang:
Источник
Библиотеки в Ubuntu
Как вы знаете каждая программа, установленная на вашем компьютере, состоит из нескольких частей. Это непосредственно исполняемый файл, который вы запускаете через терминал, а также библиотеки с набором функций, которые может использовать программа.
Все, без исключения, программы используют библиотеки. Даже если это ваша программа и у нее нет своих библиотек, она использует стандартную библиотеку языка программирования С.
В этой статье мы подробно рассмотрим что такое библиотеки 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 => /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:
На скриншоте показаны два варианта вывода программы, для 32 бит, в нашем случае Skype и для 64 — mount.
Для того чтобы установить библиотеку Ubuntu с архитектурой i386 сначала необходимо добавить поддержку архитектуры i386 в dpkg:
sudo dpkg —add-architecture i386
Затем обновляем наши репозитории:
sudo apt update
А во время установки нужной вам библиотеки теперь необходимо указать архитектуру через двоеточие после имени пакета:
sudo apt install libfuse-dev:i386
Если вы уверенны, что библиотека установлена, но программа все равно говорит, что такой библиотеки нет, то возможно, ей просто нужна другая версия библиотеки. Например, в системе есть libudev.so.0, а программе нужна libudev.so.0.1. Такое случается, если вы попытаетесь установить пакет для другого дистрибутива, особенно в Red Hat системах. Если в репозиториях нет нужной версии библиотеки, то скорее всего, они одинаковы, и можно просто создать символическую ссылку:
ln -s /lib/libudev.so.0 /lib/libudev.so.0.1
Затем программа найдет нужную библиотеку.
Управление библиотеками в Linux
Установка библиотек ubuntu уже рассмотрена, но хотелось бы упомянуть еще пару моментов. Как я сказал, библиотеки ubuntu размещаются в определенных каталогах, но расположение библиотек можно настроить.
Перед тем как библиотека будет подключена к программе, ее должна найти в системе специальная программа — менеджер библиотек. Он берет адреса библиотек из файла /etc/ld.cache, а этот файл формируется утилитой ldconfig, на основе файлов конфигурации /etc/ld.so.conf.
В этом файле перечислены все пути к библиотекам. Если вы хотите добавить свою папку для библиотек просто добавьте ее в этот файл:
Затем обновите кэш просто выполнив:
Теперь ваша библиотека может быть загружена программой, например, вы можете добавить путь /opt/lib или даже /home/user/lib. И система будет нормально грузить оттуда библиотеки.
Посмотреть какие библиотеки находятся в кеше ld.cache можно командой:
Также мы можем проверить находится ли там определенная библиотека:
ldconfig -p | grep libjpeg
Еще один способ указать программе где нужно искать библиотеки — это переменная LD_LIBRARY_PATH. Например:
Теперь программы, запускаемые в этом терминале, кроме стандартных путей поиска библиотек, будут использовать и указанную папку.
Выводы
Вот и все. Теперь вы знаете как работают библиотеки Ubuntu, как выполняется установка библиотек Ubuntu и делать так, чтобы программа видела нужную ей библиотеку. У новичков это может вызвать очень много головной боли, но теперь вы знаете что делать и избежите многих ошибок. Если у вас остались вопросы, пишите в комментариях!
Источник