2013-02-25 49 views
8

Tôi có một nhị phân mà ldd cho thấy một phụ thuộc bất ngờ und libicuuc (từ "icu").Ldd có hiển thị phụ thuộc của phụ thuộc không?

#ldd A 
[...] 
libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007faaf9722000) 
libicuuc.so.49 => /usr/lib64/libicuuc.so.49 (0x00007faaf5689000) 

Từ trên hệ thống libxml điều này phụ thuộc vào động libicuuc, nó có ý nghĩa rằng LDD enventually kết thúc việc tìm kiếm nó, nhưng nó nó dự kiến ​​libicuuc đó cũng xuất hiện trong đầu ra ldd cho A? Có một số lệnh để lấy chỉ các thư viện được liên kết như phụ thuộc của phụ thuộc?

+1

Có đó là cách hoạt động của ldd. Xem ví dụ [ở đây] (http://stackoverflow.com/questions/1488527/hierarchical-ldd1) để biết thêm thông tin. –

Trả lời

15

ldd hiển thị tất cả thư viện cần tải khi khởi động ứng dụng hoặc tải thư viện được chia sẻ.

readelf -d chỉ hiển thị phụ thuộc trực tiếp của nhị phân.

$ readelf -d /opt/google/chrome/chrome | grep NEEDED 
0x0000000000000001 (NEEDED)    Shared library: [libX11.so.6] 
0x0000000000000001 (NEEDED)    Shared library: [libXrandr.so.2] 
0x0000000000000001 (NEEDED)    Shared library: [libXrender.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [libXss.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [libXext.so.6] 
0x0000000000000001 (NEEDED)    Shared library: [librt.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [libdl.so.2] 
0x0000000000000001 (NEEDED)    Shared library: [libgobject-2.0.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libgthread-2.0.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libglib-2.0.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libgtk-x11-2.0.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libgdk-x11-2.0.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libatk-1.0.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libgdk_pixbuf-2.0.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libpangocairo-1.0.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libcairo.so.2] 
0x0000000000000001 (NEEDED)    Shared library: [libpango-1.0.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libfreetype.so.6] 
0x0000000000000001 (NEEDED)    Shared library: [libfontconfig.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [libnss3.so] 
0x0000000000000001 (NEEDED)    Shared library: [libnssutil3.so] 
0x0000000000000001 (NEEDED)    Shared library: [libsmime3.so] 
0x0000000000000001 (NEEDED)    Shared library: [libplc4.so] 
0x0000000000000001 (NEEDED)    Shared library: [libnspr4.so] 
0x0000000000000001 (NEEDED)    Shared library: [libpthread.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libgconf-2.so.4] 
0x0000000000000001 (NEEDED)    Shared library: [libdbus-1.so.3] 
0x0000000000000001 (NEEDED)    Shared library: [libXcomposite.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [libasound.so.2] 
0x0000000000000001 (NEEDED)    Shared library: [libXfixes.so.3] 
0x0000000000000001 (NEEDED)    Shared library: [libcups.so.2] 
0x0000000000000001 (NEEDED)    Shared library: [libgcrypt.so.11] 
0x0000000000000001 (NEEDED)    Shared library: [libbz2.so.1.0] 
0x0000000000000001 (NEEDED)    Shared library: [libexpat.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [libudev.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libstdc++.so.6] 
0x0000000000000001 (NEEDED)    Shared library: [libm.so.6] 
0x0000000000000001 (NEEDED)    Shared library: [libgcc_s.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [libc.so.6] 
0x0000000000000001 (NEEDED)    Shared library: [ld-linux-x86-64.so.2] 

$ ldd /opt/google/chrome/chrome 
    linux-vdso.so.1 => (0x00007fff9d3ff000) 
    libX11.so.6 => /lib64/libX11.so.6 (0x00007f93186dc000) 
    libXrandr.so.2 => /lib64/libXrandr.so.2 (0x00007f93184d3000) 
    libXrender.so.1 => /lib64/libXrender.so.1 (0x00007f93182c9000) 
    libXss.so.1 => /lib64/libXss.so.1 (0x00007f93180c5000) 
    libXext.so.6 => /lib64/libXext.so.6 (0x00007f9317eb2000) 
    librt.so.1 => /lib64/librt.so.1 (0x00007f9317caa000) 
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f9317aa6000) 
    libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x00007f9317858000) 
    libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x00007f9317656000) 
    libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f9317336000) 
    libgtk-x11-2.0.so.0 => /lib64/libgtk-x11-2.0.so.0 (0x00007f9316cbf000) 
    libgdk-x11-2.0.so.0 => /lib64/libgdk-x11-2.0.so.0 (0x00007f9316a00000) 
    libatk-1.0.so.0 => /lib64/libatk-1.0.so.0 (0x00007f93167de000) 
    libgdk_pixbuf-2.0.so.0 => /lib64/libgdk_pixbuf-2.0.so.0 (0x00007f93165bb000) 
    libpangocairo-1.0.so.0 => /lib64/libpangocairo-1.0.so.0 (0x00007f93163ae000) 
    libcairo.so.2 => /lib64/libcairo.so.2 (0x00007f9316103000) 
    libpango-1.0.so.0 => /lib64/libpango-1.0.so.0 (0x00007f9315eb7000) 
    libfreetype.so.6 => /usr/lib64/freetype-freeworld/libfreetype.so.6 (0x00007f9315c15000) 
    libfontconfig.so.1 => /lib64/libfontconfig.so.1 (0x00007f93159e0000) 
    libnss3.so => /lib64/libnss3.so (0x00007f93156a4000) 
    libnssutil3.so => /lib64/libnssutil3.so (0x00007f9315479000) 
    libsmime3.so => /lib64/libsmime3.so (0x00007f931524c000) 
    libplc4.so => /lib64/libplc4.so (0x00007f9315046000) 
    libnspr4.so => /lib64/libnspr4.so (0x00007f9314e09000) 
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f9314bed000) 
    libgconf-2.so.4 => /lib64/libgconf-2.so.4 (0x00007f93149bc000) 
    libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007f9314778000) 
    libXcomposite.so.1 => /lib64/libXcomposite.so.1 (0x00007f9314575000) 
    libasound.so.2 => /lib64/libasound.so.2 (0x00007f9314294000) 
    libXfixes.so.3 => /lib64/libXfixes.so.3 (0x00007f931408e000) 
    libcups.so.2 => /lib64/libcups.so.2 (0x00007f9313e33000) 
    libgcrypt.so.11 => /lib64/libgcrypt.so.11 (0x00007f9313bba000) 
    libbz2.so.1.0 => not found 
    libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f9313991000) 
    libudev.so.0 => /lib64/libudev.so.0 (0x00007f9313782000) 
    libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f931347f000) 
    libm.so.6 => /lib64/libm.so.6 (0x00007f9313184000) 
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f9312f6e000) 
    libc.so.6 => /lib64/libc.so.6 (0x00007f9312bb7000) 
    /lib64/ld-linux-x86-64.so.2 (0x0000003c7a000000) 
    libxcb.so.1 => /lib64/libxcb.so.1 (0x00007f9312999000) 
    libffi.so.5 => /lib64/libffi.so.5 (0x00007f9312790000) 
    libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x00007f931258c000) 
    libgio-2.0.so.0 => /lib64/libgio-2.0.so.0 (0x00007f931223f000) 
    libpangoft2-1.0.so.0 => /lib64/libpangoft2-1.0.so.0 (0x00007f9312012000) 
    libXinerama.so.1 => /lib64/libXinerama.so.1 (0x00007f9311e0f000) 
    libXi.so.6 => /lib64/libXi.so.6 (0x00007f9311c00000) 
    libXcursor.so.1 => /lib64/libXcursor.so.1 (0x00007f93119f4000) 
    libXdamage.so.1 => /lib64/libXdamage.so.1 (0x00007f93117f1000) 
    libpng15.so.15 => /lib64/libpng15.so.15 (0x00007f93115c7000) 
    libpixman-1.so.0 => /lib64/libpixman-1.so.0 (0x00007f9311340000) 
    libz.so.1 => /lib64/libz.so.1 (0x00007f9311129000) 
    libplds4.so => /lib64/libplds4.so (0x00007f9310f24000) 
    libdbus-glib-1.so.2 => /lib64/libdbus-glib-1.so.2 (0x00007f9310cfd000) 
    libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f9310ab8000) 
    libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f93107d3000) 
    libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f93105a8000) 
    libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f93103a3000) 
    libgnutls.so.26 => /lib64/libgnutls.so.26 (0x00007f93100eb000) 
    libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007f930fee7000) 
    libavahi-common.so.3 => /lib64/libavahi-common.so.3 (0x00007f930fcd9000) 
    libavahi-client.so.3 => /lib64/libavahi-client.so.3 (0x00007f930fac8000) 
    libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f930f891000) 
    libXau.so.6 => /lib64/libXau.so.6 (0x00007f930f68c000) 
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f930f46b000) 
    libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f930f251000) 
    libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f930f046000) 
    libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f930ee42000) 
    libtasn1.so.3 => /lib64/libtasn1.so.3 (0x00007f930ec31000) 
    libp11-kit.so.0 => /lib64/libp11-kit.so.0 (0x00007f930ea1e000) 
    libfreebl3.so => /lib64/libfreebl3.so (0x00007f930e7b3000) 

Có một số lệnh để lấy chỉ các thư viện được liên kết trong khi phụ thuộc phụ thuộc?

Bạn có thể thực hiện sự khác biệt đã đặt của các đầu ra lddreadelf -d.

+0

Tuyệt vời. Cảm ơn rất nhiều. – Thomas

+1

objdump -T cũng giúp – socketpair

+0

Đối với tất cả các bản sao-mèo: ** Danh sách phụ thuộc trực tiếp của tất cả các tập tin thực thi trong một thư mục **: '{for i in $ (tìm DIRECTORY -type f -executable -print); tự đọc - $ i 2>/dev/null | grep CẦN | awk '{print $ 5}' | sed "s/\ [// g" | sed "s/\] // g"; làm xong; } | sắp xếp -u' – meisterplanlos

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