Bir ikiliye bağlanmış kütüphaneleri bulun


40

Bana bir yazılımın bağlandığı libleri ve ilgili sürümleri listeleyen bir komut olduğunu biliyorum.

Ld veya libtool ile bir şey?

Ama ben sadece hatırlayamıyorum. Google’da biraz zaman geçirdim ancak faydalı bir şey bulamadık.

Güncelleme
ldd <binary> (linux üzerinde yardımcı olacağını den @ Ernelli bunu buldum iken) otool -L <binary>MacOS X'te benzer bir şey yapar


Yanıtlar:


41

Ldd binary-exec komutunu deneyin

Örnek:

~$ 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)

Dang! Yani ilk denemem haklıydı. Sadece
Mac'ime kurmam

@ er4z0r: FYI, Mac OS Linux değil BSD'dir .
Grawity

6
grwaity: haklısın. Ldd linux konusunda yardımcı olurken, 'otool -L <binary>' nin de benzer bir şey yaptığını gördüm.
er4z0r

15

Doğrudan neye ihtiyacı olduğunu bulmak için:

readelf -d APP | grep NEEDED

lddBaşka yerlerde de belirtildiği gibi, çalışma zamanında ihtiyaç duydukları her şeyi doğrudan ve dolaylı tüm kütüphaneleri gösterecektir. Bu tam bir liste olmayabilir, çünkü dlopen () ile şeyleri dinamik olarak açabilirsiniz, ancak bu zamanın% 99'unda çalışmalıdır.

Derleme / bağlantı süresinde ld ve libtool kullanılır. Bir uygulamanız olduğunda kullanışlı değillerdir.

EDIT OSX hakkında sorduğun cevaplarla daha sonra görebiliyorum, ancak Linux araçlarındaki cevabımı eklemek istiyorum:

Söylemeyi unuttuğum bir şey, bir süre önce; versiyonlarını sordun. Ne lddde readelf"hangi sürümünü" soruya cevap verecektir. Size aradığınız kütüphanenin dosya adını söyleyeceklerdir ve adlandırma kuralının bazı sürüm bilgileri olabilir, ancak hiçbiri bunu zorlamaz. Semboller versiyonlanmış olabilir ve bunları nmgörmek için daha da düşük seviyelerde olmanız gerekebilir ,


9

Başka bir yol da objdump kullanmak olacaktır.

objdump -x "ikili" | grep İHTİYACI

Bu, yalnızca bu ikili için gereken tüm bağımlılıkları gösterir. Çok kullanışlı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.