PDA

Показать полную графическую версию : Как узнать какие библиотеки динамически линкуются


Mihael
19-10-2002, 07:01
Как узнать какие библиотеки динамически линкуются к выполнимому файлу (в частности, к  elf'у)?
Наверняка есть подобные утилиты!
Не знаете нельзя ли в инете где-нибудь найти ресурс с статически слинкованными утилитами для линукса небольшого размера?
В частности нужны, какой-нить маленький шелл, вроде bourne shell, нбольшой mount и какой-нить lsdev bkb rdev.

Barracuda
19-10-2002, 09:40
Mihael
Как узнать какие библиотеки динамически линкуются к выполнимому файлу (в частности, к  elf'у)?
Есть, звате её readelf. Поиграйтесь с параметрами и получите необходимую информацию. А чтобы показать всё, укажите readelf -a <elf_binary_file> (если не обшибаюсь, то он и для библиотек инфу кажет).
какой-нить маленький шелл
Вроде в дистрибутиве RedHat такая есть. А вообще надо искать - так, на память, не помню.

Guest
19-10-2002, 10:04
Я что-то с его параметрами не разобрался... :(

В редхате есть ash - он якобы маленький статически слинкованный 500КБ.

ruslandh
20-10-2002, 07:17
ldd Name_file
ld Name_file


Добавлено:

ash - есть во многих системах.


Добавлено:

Поищи на http://www.unixware.ru/  слово mini

ooptimum
25-01-2003, 17:58
objdump, nm, readelf, ldd... Много всякой информации. Но как посмотреть что вот эта конкретная функция импортируется вот из этой конкретной библиотеки? В Win* это достаточно легко, а вот как этого добиться в линуксе?

ruslandh
26-01-2003, 07:23
ooptimum
Можно и исходные коды этой библиотеки посмотреть :)
(Я вообще-то не врублюсь - в чем здесь проблема?)

ooptimum
26-01-2003, 15:25
ruslandh
Исходные коды не всегда доступны. Это - раз. Во-вторых, их надо смотреть, а это лениво.
не врублюсь - в чем здесь проблема?
А проблема в том, что я не знаю как добиться того, о чем спрашивал. А знать хочу. Описываю запрос немного по-иному -- ldd может сказать, что приложение A динамически линкует библиотеки Б, В и Г. Это хорошо, но мне этого не достаточно. Я знаю, что приложение А импортирует функции Ф1, Ф2 и Ф3. Я хочу знать из какой библиотеки импортируется та или иная функция (т.е. Ф1 из Б, Ф2 из Г и Ф3 из В, например). Хочу это знать, не изучая самих библиотек Б, В и Г, а имея доступ только к самому приложению А. В форточках это элементарно, а вот как этого добиться в линуксе я и пытаюсь узнать.

Barracuda
26-01-2003, 16:19
ooptimum
Ещё раз.
readelf -a <file_name> | less

ooptimum
27-01-2003, 08:09
Barracuda
Еще раз... Ты думаешь я не смотрел, что дает readelf? Хорошо, вот пример. Squid есть у тебя? Выполняем команду:
readelf -a `which squid`
и читаем ее вывод. У себя я среди прочего вижу, что необходимы следующие библиотеки:

0x00000001 (NEEDED)                     Shared library: [libcrypt.so.1]
0x00000001 (NEEDED)                     Shared library: [libm.so.6]
0x00000001 (NEEDED)                     Shared library: [libresolv.so.2]
0x00000001 (NEEDED)                     Shared library: [libnsl.so.1]
0x00000001 (NEEDED)                     Shared library: [libc.so.6]

Но, мля, как мне посмотреть какая именно функция импортируется, скажем, из libcrypt.so.1? Если ты имеешь в виду секцию '.dynsym', то там такой информации нет. Там все входы имеют вид типа 'func_name@GLIBC_2.0'.

На мой вопрос есть нормальный ответ в природе?

Guest
28-01-2003, 16:44
ooptimum
Тоды ой :)
Увы, но т.к. я не програмёр, то ничем больше помочь не могу :(
Залогиниться забыл

Исправлено: Barracuda, 17:03 28-01-2003

shurikan
30-01-2003, 04:12
ooptimum
Я знаю, что приложение А импортирует функции Ф1, Ф2 и Ф3. Я хочу знать из какой библиотеки импортируется та или иная функция (т.е. Ф1 из Б, Ф2 из Г и Ф3 из В, например). Хочу это знать, не изучая самих библиотек Б, В и Г
Поизучать Б, В и Г (чуть-чуть) всё-таки придётся:

mc <ENTER> - ну в смысле запускаем
в любой панели переходим в каталог, где эти самые Б, В и/или Г.
выбираем любой из них и жмём <F3> - то бишь просмотр
<F7> - в смысле поиск. Ф1 <ENTER>


Для .so файлов (как и для многих других бинарников) midnight commander в режиме просмотра открывает его экспортную часть.

Добавлено:

Можно и grep на библиотеки напустить




© OSzone.net 2001-2012