2013-02-25 30 views
8

私はlddが予期せぬ依存関係とlibicuuc( "icu"由来)を示すバイナリを持っています。このシステムのlibxmlであるためlddは依存関係の依存関係も示していますか?

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

は、それがenventually lddはそれを見つける終わる理にかなって、動的にlibicuucに依存しますが、それはそれはそれlibicuucものためのLDD出力に表示されます期待しましたか?依存関係の依存関係としてリンクされているライブラリのみを取得するコマンドがありますか?

+1

はい、これはlddの動作です。例えば、詳細については、[こちら](http://stackoverflow.com/questions/1488527/hierarchical-ldd1)をご覧ください。 –

答えて

15

lddには、アプリケーションの起動時または共有ライブラリのロード時にロードする必要があるすべてのライブラリが表示されます。

readelf -dは、バイナリの直接の依存関係のみを示します。

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

依存関係の依存関係としてリンクされているライブラリのみを取得するには、いくつかのコマンドがありますか?

lddreadelf -d出力の差を設定できます。

+0

素晴らしい。どうもありがとう。 – Thomas

+1

objdump -Tも役に立ちます – socketpair

+0

すべてのコピーcat:**ディレクトリ内のすべての実行可能ファイルの直接の依存関係のリスト**: '{for i in $(find DIRECTORY -type f -executable -print); readelfを実行する-d $ i 2>/dev/null | grepが必要です| awk '{print $ 5}' | sed "s/\ [// g" | sed "s/\] // g";完了しました。 } |ソート-u' – meisterplanlos

関連する問題