Шукати бібліотеки, по відношенню до яких є бінарне


40

Я знаю, що є команда, яка перелічує мені libs та відповідні версії, з якими було пов'язано програмне забезпечення.

Щось із ld чи libtool?

Але я просто не можу згадати. Провів деякий час у Google, але нічого корисного не придумав.

Оновлення
ldd <binary> допоможе на Linux, ( від @ Ernelli ), хоча я виявив, що otool -L <binary>робить щось подібне на MacOS X.


Відповіді:


41

Спробуйте ldd binary-exec

Приклад:

~$ ldd /bin/bash
    linux-gate.so.1 =>  (0x00606000)
    libncurses.so.5 => /lib/libncurses.so.5 (0x00943000)
    libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00c5d000)
    libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x003e9000)
    /lib/ld-linux.so.2 (0x00a41000)

Данг! Тож моя перша спроба була правильною. Просто потрібно встановити його на моєму Mac, щоб він гостро знав команду ;-)
er4z0r

@ er4z0r: FYI, Mac OS - це BSD, а не Linux .
grawity

6
grwaity: ти маєш рацію. Хоча ldd допоможе на Linux, я виявив, що 'otool -L <binary>' робить щось подібне.
er4z0r

15

Щоб знайти те, що йому безпосередньо потрібно:

readelf -d APP | grep NEEDED

lddяк уже згадувалося в іншому місці, будуть показані всі прямі та непрямі лайки - все, що потрібно під час виконання. Це може бути не повним списком, оскільки ви можете динамічно відкривати речі за допомогою dlopen (), але це повинно працювати 99% часу.

ld і libtool використовуються під час компіляції / посилання. Вони не є корисними, коли у вас є додаток.

EDIT Я можу побачити пізніші відповіді, які ви запитували про OSX, але я хочу додати свою відповідь про інструменти Linux:

Одне, що я забув згадати, досить давно; ви запитали про версії. Ні, lddні readelfвідповіді на питання "яка версія". Вони повідомлять вам ім'я файлу бібліотеки, яку ви шукаєте, і у конвенції про іменування може бути інформація про версію, але нічого цього не примушує. Символи можуть бути урізноманітненими, і вам доведеться значно більше навіть нижчого рівня, nmщоб побачити їх,


9

Іншим способом було б використання objdump.

objdump -x "двійковий" | grep ПОТРІБНА

Це показує всі необхідні залежності лише для цього бінарного. Дуже корисний.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.