LINUX.ORG.RU

Список зависимостей


0

0

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

★★★★★

обычно требуемые зависимости указаны на оффсайте либо перечислены в файле INSTALL

JB ★★★★★
()
Ответ на: комментарий от JB

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

KblCb ★★★★★
() автор топика
Ответ на: комментарий от KblCb

Ну-у... Часть информации выдасть ldd

-bash$ ldd `which ls`
linux-gate.so.1 => (0xffffe000)
librt.so.1 => /lib/librt.so.1 (0xb7f62000)
libtinfo.so.5 => /lib/libtinfo.so.5 (0xb7f38000)
libc.so.6 => /lib/libc.so.6 (0xb7e12000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7dfc000)
/lib/ld-linux.so.2 (0x80000000)

А вообще, наверное, имеет смысл посмотреть/спросить как rpmbuild зависимости вычисляет.

lodin ★★★★
()
Ответ на: комментарий от lodin

>А вообще, наверное, имеет смысл посмотреть/спросить как rpmbuild зависимости вычисляет.

А он именно вычисляет? Мне, если честно, казалось, что он их тягает из спек...

KblCb ★★★★★
() автор топика
Ответ на: комментарий от JB

>ldd /path/to/binary

ldd это хорошо, но что если в силу скажем лицензионной специфики binary не слинкован с другой программой, а просто её вызывает через пайп? А уж про всякие /path/to/bla-bla-bla.{py|pl|sh} даже думать не хочется.

KblCb ★★★★★
() автор топика
Ответ на: комментарий от KblCb

Вроде никак, особенно если программа сама грузит все плугины из определенного каталога, выполняя из грузит другие файлы...

>Мне же нужен непосредственный список файлов, которые необходимы программе.

А если программа с локализацией, то есть glibc в зависимости от переменных среды грузит разные файлы локализации, то эти файлы как, относятся к необходимым или нет?

mky ★★★★★
()
Ответ на: комментарий от mky

Стоп... configure-скрипт проверяет наличие необходимых зависимостей. Он это делает без помощи пакетного менеджера, значит он не знает как называются пакеты установленные на машину. Как он это делает?

KblCb ★★★★★
() автор топика
Ответ на: комментарий от JB

Сомнительно.
~# pkg-config --list-all | grep qt
avahi-qt4                   avahi-qt4 - Avahi Multicast DNS Responder (QT4 Support)
poppler-qt4                 poppler-qt4 - Qt4 bindings for poppler
poppler-qt                  poppler-qt - Qt bindings for poppler
Он ничего не знает о qt4. Однако же и cmake и ./configure в курсе что они (qt4) есть.

KblCb ★★★★★
() автор топика

Так-с, насколько мне известо, да и даже если заглянуть в нужный configure это шеловский скрипт. Чаще всего используется pkg-config, но иногда он может и не требоваться, тогда вопрос о том если нужное приложение/библиотека ищется другим путем, например, при явном указании пути (--with-openssl=/usr/local). Также используются стандартные имена файлов и их расположение например /etc/fstab, а также стандартные ENV-переменные, например, LC_LOCALE. Вся инфа заносится как в config.log, config.cache, так и в config.status, в зависимости от предпочтения мэйнтэйнера. Собственно вот так вот.

gh0stwizard ★★★★★
()
Ответ на: комментарий от KblCb

По-всякому. В поисках устоявшихся методов смотри m4-файлы aclocal у себя в системе и поставляемые с пакетом, иногда проверки просто тупо включаются в configure.in. Если можно, то действительно используется pkgconfig, просто не все пакеты его поддерживают.

Sphinx ★★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.