2009-07-13 46 views
7

Trong Windows Tôi đã sử dụng một chương trình được gọi là trình theo dõi phụ thuộc để kiểm tra các thư viện mà ứng dụng đang sử dụng. Tôi đã tự hỏi làm thế nào tôi có thể đạt được điều này trên Linux cho một nhị phân chuẩn:Độ phân giải phụ thuộc trong Linux

Thực thi LSB 32 bit ELF, Intel 80386, phiên bản 1 (SYSV), được liên kết động (sử dụng libs chia sẻ), cho GNU/Linux 2.6.0 , bị tước

Cảm ơn.

+0

http://stackoverflow.com/questions/1057234/discovery-of-dynamic-library-dependency-on-mac-os-linux – mark4o

Trả lời

14

Hãy thử:

ldd executable 

Ví dụ:

[[email protected] ~]$ ldd /bin/ls 
     linux-gate.so.1 => (0xb7f57000) 
     librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb7f4c000) 
     libselinux.so.1 => /lib/libselinux.so.1 (0xb7f32000) 
     libacl.so.1 => /lib/libacl.so.1 (0xb7f2b000) 
     libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7ddc000) 
     libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7dc4000) 
     /lib/ld-linux.so.2 (0xb7f58000) 
     libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7dc0000) 
     libattr.so.1 => /lib/libattr.so.1 (0xb7dbb000) 
[[email protected] ~]$ 

Lưu ý rằng điều này sẽ chỉ báo cáo các thư viện chia sẻ. Nếu bạn cần tìm hiểu những thư viện tĩnh nào được liên kết trong thời gian biên dịch, điều đó phức tạp hơn một chút, đặc biệt là khi tệp thực thi của bạn bị 'tước' (không có biểu tượng gỡ lỗi).

5

Sử dụng ldd

ldd /bin/sh 
+0

Ha, cảm ơn rất nhiều! – James

1

Sử dụng ldd. Nó sẽ hiển thị các thư viện động mà nhị phân cần.

Lưu ý rằng bản thân các thư viện có thể cần nhiều thư viện hơn. Để có được những điều này, bạn có thể chạy ldd trên các thư viện mà bạn có được từ chạy ldd trên nhị phân.

3

Nếu bạn muốn một chút gì đó ít thô hơn gọi lặp lại ldd và hơi giống MSVC phụ thuộc, bạn nên thử Visual-ldd. Nó chưa được cập nhật trong 4 năm, nhưng nó vẫn hoạt động vì định dạng ELF không thay đổi. Nó vẫn sẽ không hiển thị cho bạn các biểu tượng riêng lẻ bên trong các thư viện đó - vì bạn sẽ cần một cái gì đó như nm và tôi không biết bất kỳ trình bao bọc GUI nào cho điều đó, thật không may.

Các vấn đề liên quan