Как выяснить список всех необходимых пакетов / библиотек для работы конкретного portable приложения в Linux, если это приложение не имеет ни репозитория ни deb-пакета?
Конкретно задача связана с FreeFileSync который ни хочет запускать диалог выбора папки в KDE Plasma на Kubuntu 14.04.05. Если установить весь xubuntu-desktop то начинает работать, если только xfce4 — не начинает. Ставить весь Xubuntu-desktop не хочу, из него начинаются проблемы в KDE (сбрасывается ряд настроек окружения, повисает видимое окно plasma-desktop в верхнем левом углу и соответствующий пункт в панели задач).
В общем нужно как то выяснить, чего конкретно не хватает FreeFileSync. Чем это можно сделать? Либо просто скажите, что ему нужно. В Доках смотрел — не нашёл.
- Вопрос задан более трёх лет назад
- 1006 просмотров
Комментировать
Решения вопроса 1
ldd exec_name
И смотреть какие библиотеки ему нужны.
Вариант №2 — запустить в консоле и смотреть на что «ругается».
LPIC 102.3 Управление библиотеками в Linux
Ответ написан более трёх лет назад
Нравится 1 2 комментария
Консоль молчит.
ldd exec_name — действительно показал пачку библиотек, но вот странность — и на системе с рабочим приложением и на системе где ему чего-то не хватает список одинаковый и даже пробивка наличия каждой библиотеки при помощи ls даёт идентичный результат на обеих системах. Наверное ldd выдаёт не полный список.
ITicDigger, ldd показывает список библиотек с которыми динамически скомпилировано приложение.
В любой системе он покажет одно и тоже для одного и того же исполняемого файла.
Источник: qna.habr.com
Linux какие библиотеки использует программа
Команда ldd предназначена для вызова одноименной утилиты, осуществляющей вывод списка разделяемых библиотек, используемых исполняемыми файлами или разделяемыми библиотеками. Разделяемые библиотеки обычно содержат реализации функций, которые необходимы для корректной работы приложений или других разделяемых библиотек. Разделяемые библиотеки (*.so) являются полным аналогом динамических библиотек (*.dll) из Windows.
Базовый синтаксис команды выглядит следующим образом:
$ ldd [параметры] [путь-к-разделяемой-библиотеке]
Утилита поддерживает параметр -v, позволяющий выводить дополнительную информацию о версиях используемых разделяемых библиотек, параметр -u, позволяющий выводить список связанных, но не используемых разделяемых библиотек, а также параметры -d и -r, позволяющие осуществлять релокации объектов данных и функций.
Рассматриваемая утилита может понадобиться в процессе разработки программного обеспечения, а также создания пакетов для его распространения.
Стоит упомянуть и о том, что система кэширует информацию о доступных разделяемых библиотеках и хранит ее в файле с именем /etc/ld.so.cache (файл не предназначен для редактирования с помощью обычного текстового редактора). Существует и файл конфигурации /etc/ld.so.conf, в котором содержится список путей к директориям, в которых размещены разделяемые библиотеки. Разделяемая библиотека с именем ld-linux-*.so выполняет функции динамического линковщика, то есть, осуществляет поиск необходимых для работы приложения разделяемых библиотек в кэше и загружает их. Помимо этого существует системная утилита ldconfig, предназначенная для обновления кэша разделяемых библиотек.
Почему Linux хорошо подходит для программирования?
Также существует вспомогательная виртуальная разделяемая библиотека linux-vdso.so (или linux-gate.so на некоторых архитектурах), которая отображается ядром Linux в адресное пространство всех пользовательских процессов и используется библиотекой языка C libc для повышения производительности при работе с некоторыми системными вызовами. На нее не стоит обращать особого внимания.
Примеры использования
Вывод списка разделяемых библиотек, используемых приложением
Для вывода списка разделяемых библиотек, используемых приложением, следует передать утилите путь к интересующему приложению.
$ ldd /bin/nano
linux-vdso.so.1 (0x00007ffc5e1d3000)
libncursesw.so.6 => /lib/x86_64-linux-gnu/libncursesw.so.6 (0x00007fed3b9e8000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007fed3b9b8000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fed3b7c7000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fed3b7c1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fed3ba8f000)
Как видно, для работы приложения nano требуется ряд разделяемых библиотек, причем первой библиотекой является вспомогательная библиотека ядра Linux, а последней — библиотека динамического линковщика.
Вывод списка разделяемых библиотек, используемых разделяемой библиотекой
Для вывода списка разделяемых библиотек, используемых другой разделяемой библиотекой, следует передать утилите путь к интересующей разделяемой библиотеке.
$ ldd /lib/x86_64-linux-gnu/libc-2.30.so
/lib64/ld-linux-x86-64.so.2 (0x00007f8d28fad000)
linux-vdso.so.1 (0x00007ffe62b78000)
Библиотека libc использует лишь вспомогательные разделяемые библиотеки.
$ ldd /lib/x86_64-linux-gnu/libbz2.so.1
linux-vdso.so.1 (0x00007ffc757cb000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3bd62f4000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3bd6516000)
Библиотека libbz2 использует библиотеку libc.
Вывод подробного списка разделяемых библиотек, используемых приложением
Для вывода подробного списка разделяемых библиотек, используемых приложением, следует использовать параметр -v.
$ ldd -v /bin/nano
linux-vdso.so.1 (0x00007fff4cfcf000)
libncursesw.so.6 => /lib/x86_64-linux-gnu/libncursesw.so.6 (0x00007f43c1744000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f43c1714000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f43c1523000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f43c151d000)
/lib64/ld-linux-x86-64.so.2 (0x00007f43c17eb000)
Version information:
/bin/nano:
libtinfo.so.6 (NCURSES6_TINFO_5.4.20040208) => /lib/x86_64-linux-gnu/libtinfo.so.6
libtinfo.so.6 (NCURSES6_TINFO_5.0.19991023) => /lib/x86_64-linux-gnu/libtinfo.so.6
libc.so.6 (GLIBC_2.27) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.6) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.3.4) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.3) => /lib/x86_64-linux-gnu/libc.so.6
libncursesw.so.6 (NCURSESW6_5.7.20081102) => /lib/x86_64-linux-gnu/libncursesw.so.6
libncursesw.so.6 (NCURSESW6_5.1.20000708) => /lib/x86_64-linux-gnu/libncursesw.so.6
/lib/x86_64-linux-gnu/libncursesw.so.6:
libdl.so.2 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libdl.so.2
libc.so.6 (GLIBC_2.3) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.3.4) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.7) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
libtinfo.so.6 (NCURSES6_TINFO_5.9.20150530) => /lib/x86_64-linux-gnu/libtinfo.so.6
libtinfo.so.6 (NCURSES6_TINFO_5.5.20051010) => /lib/x86_64-linux-gnu/libtinfo.so.6
libtinfo.so.6 (NCURSES6_TINFO_5.1.20000708) => /lib/x86_64-linux-gnu/libtinfo.so.6
libtinfo.so.6 (NCURSES6_TINFO_5.2.20001021) => /lib/x86_64-linux-gnu/libtinfo.so.6
libtinfo.so.6 (NCURSES6_TINFO_5.6.20061217) => /lib/x86_64-linux-gnu/libtinfo.so.6
libtinfo.so.6 (NCURSES6_TINFO_5.7.20081102) => /lib/x86_64-linux-gnu/libtinfo.so.6
libtinfo.so.6 (NCURSES6_TINFO_5.8.20110226) => /lib/x86_64-linux-gnu/libtinfo.so.6
libtinfo.so.6 (NCURSES6_TINFO_5.4.20040208) => /lib/x86_64-linux-gnu/libtinfo.so.6
libtinfo.so.6 (NCURSES6_TINFO_5.0.19991023) => /lib/x86_64-linux-gnu/libtinfo.so.6
/lib/x86_64-linux-gnu/libtinfo.so.6:
libc.so.6 (GLIBC_2.3) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.14) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.16) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.3.4) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
/lib/x86_64-linux-gnu/libc.so.6:
ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
/lib/x86_64-linux-gnu/libdl.so.2:
ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
libc.so.6 (GLIBC_PRIVATE) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib/x86_64-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
Информация о версиях библиотек приведена в разделе Version information.
Источник: linux-faq.ru
Библиотеки Linux
Все мы привыкли пользоваться программами в любой операционной системе для решения своих задач. Но за функциональностью программ стоит еще одна вещь, с которой мы редко встречаемся при обычной работе с компьютером. Это библиотеки, которые содержат общий набор функций и возможностей, используемых программами. Например, большинство программ, написанных на Си, используют стандартную библиотеку Си, в которой содержатся все основные возможности взаимодействия с системой.
У каждой программы есть свой набор библиотек, которые должны быть в системе чтобы она смогла работать. Иначе бы программистам пришлось заново изобретать различные алгоритмы, писать много кода и разработка программ занимала бы в разы больше времени. В этой статье мы собрали основные библиотеки Linux, а также их предназначение. Эта информация поможет вам лучше освоиться в системе.
Что такое библиотеки?
Как я уже говорил выше — библиотеки реализуют общие возможности, которые потом используются программами. Если говорить просто, то библиотека — это набор функций, каждую из которых можно использовать в любой программе. Например, если программе нужно вывести строку на экран, она не будет лезть прямо в буфер видеокарты, а использует функцию из стандартной библиотеки.
Библиотеки делятся на два типа — динамические и статические. Статические библиотеки linux подключаются на этапе сборки программы, а динамические — во время выполнения и они общие для нескольких программ. Нас будут интересовать именно динамические библиотеки linux. Они находятся в папках /lib, /lib64, /usr/lib, /usr/lib/x86_64-linux-gnu.
Каждая библиотека имеет расширение .so, за которым следует номер версии. Этот номер увеличивается каждый раз, когда разработчики вносят серьезные изменения. Такой подход необходим для того, чтобы сохранить совместимость для программ, использующих старые версии. Например, в системе может быть две библиотеки libfuse.so.0 и libfuse.so.1. Далее мы рассмотрим основные библиотеки и их предназначение.
Как получить информацию о библиотеках?
Перед тем как перейти к рассмотрению самих библиотек, вам, наверное, будет интересно, как получить информацию о них и узнать где они находятся в вашей системе. Библиотеки Linux могут быть размещены в различных каталогах, в зависимости от дистрибутива, но посмотреть эти каталоги можно, выполнив:
Во всех перечисленных здесь каталогах находятся статические и динамически библиотеки Linux:
ls -l /lib/x86_64-linux-gnu/
Информацию о зависимостях каждой библиотеки вы можете посмотреть командой ldd:
А еще можно узнать какому пакету принадлежит библиотека в Ubuntu:
dpkg -S /lib/x86_64-linux-gnu/ld-2.24.so
Как видите, библиотека ld.so принадлежит пакету libc6, точнее она входит в набор инструментов Си. Более подробно, о том, как устанавливать новые библиотеки и решать проблемы с ними, описано в статье библиотеки Ubuntu.
Основные библиотеки
Это библиотеки основных языков программирования, которые содержат базовую функциональность для взаимодействия с системой.
- libanl.so — библиотека работы с DNS;
- libc.a — основная статическая библиотека языка Си;
- libdl.a — библиотека, отвечающая за загрузку других библиотек во время запуска программы;
- libnsl.so — работа со службой NIS;
- libstdc++.so — стандартная библиотека C++;
- libutil.so — реализует основные часто используемые функции;
- libelf.so — библиотека для работы с бинарными файлами ELF;
- libevent.so — библиотека с реализацией механизма вызова функций после события;
- libgnutls.so — библиотека с основными методами и возможностями, используемыми в стандартных утилитах Linux;
- ld-linux.so — главная библиотека, она собрана в виде статической и не имеет зависимостей. Загружает другие библиотеки и исполняемые файлы. Вы можете вызвать эту библиотеку как программу и передать ей адрес исполняемого файла для запуска.
Библиотеки кодеков
Эти библиотеки содержат наборы кодеков для воспроизведения различных медиа данных. Некоторые из них имеют несвободную лицензию или закрытый исходный код:
- liba52.so — свободный декодер ATSC A/52;
- libavfilter6.so — библиотека фильтров ffmpeg;
- libavcodec57.so — библиотека кодеков ffmpeg;
- libavformat57.so — библиотека форматов ffmpeg;
- libavutil55.so — библиотека дополнительных функций ffmpeg;
- libdv.so — программный кодек для DV;
- libmad.so — MPEG аудио декодер;
- libmpeg2.so — потоковый декодер видео данных;
- libmpg123.so — библиотека консольного плеера mpg123;
- libwebp.so — декодирование формата Webp;
- libxvidcore.so — медиа кодек MPEG-4.
Звуковые библиотеки
- libao.so — библиотека проигрывания звука с простым интерфейсом;
- libasound.so — библиотека взаимодействия со звуковой подсистемой ALSA;
- libaudio2.so — библиотека работы со звуком, входит в состав ALSA;
- libespeak.so — библиотека синтеза речи;
- libpulse.so — библиотека с основными методами PulseAudio;
Работа с архивами
- libarchive.so — библиотека для работы с архивами различных форматов;
- liblzma.so — работа с архивами LZMA.
Графические библиотеки
- libart.so — библиотека с реализацией функций для работы с 3d графикой;
- libaa.so — библиотека ASCII графики;
- libgtk-3.so — набор методов графического фреймворка GTK 3;
- libgd.so — базовые функции работы с графикой и рисования;
- libgif.so — работа с форматом изображений Gif;
- libjpeg.so — работа с изображениями Jpeg;
- libglapi.so — свободная реализация методов для работы с OpenGL;
- libgtk-x11-2.0.so — набор методов библиотеки GTK 2;
- libwx_baseu.so, libwx_baseu_net-3.0.so и другие — набор библиотек фремворка создания графических приложений WX;
- libX11.so — основные методы и функции X сервера;
- libncurses.so — одна из самых популярных библиотек псевдографики;
- libQtGui.so, libQt5Svg.so, libQt5Widgets.so и другие — библиотеки фреймворка разработки графических приложений Qt.
Работа с текстом
- libaspell.so — библиотека проверки орфографии;
- libfreetype.so — библиотека отрисовки шрифтов;
- libharfbuzz.so — библиотека обработки символов Unicode;
- libxml2.so — библиотека разбора XML;
- libyaml-0.so — библиотека разбора Yaml.
Безопасность
- libcrack.so — библиотека с реализацией методов перебора паролей для проверки их надежности;
- libcrypt.so — библиотека, отвечающая за шифрование;
- libssl3.so — библиотека шифрования SSLv3;
- libapparmor.so — библиотека управления системой безопасности AppArrmor;
- libaudit.so — библиотека слежения за состоянием системы и регистрации событий.
Библиотеки драйверов
- libcups.so — библиотека работы с принтером;
- libfuse.so — библиотека организации виртуальных файловых систем;
- libgphoto2.so — библиотека взаимодействия с камерами по USB;
- libsensors.so — используется для получения информации от датчиков на материнской плате;
- libudisks2.so — библиотека usisks, которая отвечает за автоматическое монтирование и обнаружение подключенных устройств;
- libv4l1.so — библиотека работы с веб-камерами;
- libpci.so — библиотека работы с PCI устройствами;
- libusb-1.0.so — библиотека управления USB;
- libdrm.so — библиотека с общими возможностями Direct Rendering Manager, отрисовки графики с помощью видеокарты;
- libdrm_amdgpu.so — DRM для драйвера AMDGPU;
- libdrm_intel.so — DRM для карт Intel;
- libdrm_nouveau.so — свободный DRM для видеокарт Nvidia;
Сеть
- libresolv.so — библиотека получения IP адреса по имени хоста;
- libpcap.so — библиотека анализа и захвата сетевых пакетов;
- libproxy.so — настройка и управление прокси;
Эмуляция
- libSDL.so — библиотека эмуляции загрузки компьютера и базовых возможностей BIOS;
- libwine.so — библиотека прослойки для запуска приложений Windows в Linux.
- libvirt.so — библиотека управления KVM;
Выводы
В этой статье мы собрали основные библиотеки Linux, которые имеют наибольшее значение для работы операционной системы. Конечно, невозможно перечислить здесь абсолютно все библиотеки, потому что их очень много. Надеюсь эта информация была полезной для вас.
На завершение урок про библиотеки Linux:
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Источник: losst.pro