2017-10-11 10 views
0

ldd rpath定義に存在するdllを見つけることができません。rpathが設定されているにもかかわらず、1つのDLLが見つかりません

ここで、lddの出力(2つのDLLは../libでは見つかるが、libexpat.so.0では見つからないことがわかります:

)を参照してください。他のライブラリが見つかりました(/./../lib/*を確認してください)。

ルートの@ hyperstream:ビン//DT /ローカル/ ADE-trunk4 /ビルドADE-デスクトップ・デフォルト# のLDD ./ade_adminのlinux-vdso.so.1 =>(0x00007ffeb9796000) libadeversion.so = > /DT/local/ADE-trunk4/build-ADE-Desktop-Default/bin/./../lib/libadeversion.so (0x00007f31abaef000)libuuid.so.1 => /lib/x86_64-linux- gnu/libuuid.so.1(0x00007f31ab8ca000) libpthread.so.0 =>/lib/x86_64-linux-gnu/libpthr dad/local/ADE-trunk4/build-ADE-Desktop-Default/bin/./../lib/libaprutil-1。ead.so.0 (0x00007f31ab6ac000)libaprutil-1.so.0 => /DT/so.0 (0x00007f31ab58c000)libapr-1.so.0 => /DT/local/ADE-trunk4/build-ADE-Desktop-Default/bin/./../lib/libapr-1.so .0 (0x00007f31ab460000)のlibavahi-client.so.3 => /usr/lib/x86_64-linux-gnu/libavahi-client.so.3(0x00007f31ab24d000) のlibavahi-common.so.3 => /usr/lib/x86_64-linux-gnu/libavahi-common.so.3(0x00007f31ab041000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2(0x00007f31aae3d000) libstdC++。so。 6 =>/usr/lib/x86_64-linux-g nu/libstdC++。so.6 (0x00007f31aaab5000)libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f31aa7ac000)libgcc_s.so.1 => /lib/x86_64-linux -gnu/libgcc_s.so.1(0x00007f31aa595000)libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6(0x00007f31aa1cc000) /lib64/ld-linux-x86-64.so。 2(0x0000560d30a76000)libexpat.so.0 => 見つからない librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f31a9fc4000)[...]

root @ hyperstream:/ DT/local/ADE-trunk4/build-ADE-Desktop-Default/bin# ファイル../lib/libexpat.so.0 ../lib/libexpat.so.0:ELF 64ビットLSBはを共有しましたオブジェクト、x86-64で、バージョン1(SYSV)、動的にリンクされ、 BuildIDは[SHA1] = 762de704943d03033d01a9725216d6b05d0740f5、ここ

を剥離しないRPATH:

ルート@ hyperstream:/ DT /ローカル/ ADE-trunk4 /ビルド-ADE-デスクトップ - デフォルト/ bin# readelf -d ade_admin | grepの 'R. * PATH' 16:0x000000000000001d(RUNPATH) 図書館実行パス:[$ {ORIGIN} /../ libに]今

キラー事実:それは打ち鳴らす3.8と作品だが、で失敗GCC 6.3(Ubuntuの16.10)

明らかに加えるLD_LIBRARY_PATH = ../libにそれが再び動作しますが、RPATHの目標を設定することを避けるためにしたこと

ルートの@ hyperstream:/ DT /ローカル/ ADE-trunk4 /ビルド-ADE-デスクトップ - デフォルト/ bin# エクスポートLD_LIB RARY_PATH = ../ lib root @ hyperstream:/ DT/local/ADE-trunk4/build-ADE-Desktop-Default/bin# ldd ./ade_admin linux-vdso.so.1 =>(0x00007ffea23b6000) libadeversion.so => ../lib/libadeversion.so(0x00007f78c6474000) libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f78c624f000)libpthread.so.0 => /lib/x86_64- linux-gnu/libpthread.so.0(0x00007f78c6031000) libaprutil-1.so.0 => ../lib/libaprutil-1.so.0(0x00007f78c5f11000) libapr-1.so.0 => ../ lib/libapr-1.so.0(0x00007f78c5de5000) libavahi-client.so.3 => /usr/lib/x86_64-linux-gnu/libavahi-client.so.3(0x00007f78c5bd2000) libavahi-common.so .3 => /usr/lib/x86_64-linux-gnu/libavahi-common.so.3(0x00007f78c59c6000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2(0x00007f78c57c2000) libstdC++。 so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f78c543a000)libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f78c5131000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1(0x00007f78c4f1a000)libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6(0x00007f78c4b51000) /lib64/ld-linux-x86-64.so.2(0x0000559fdceab000)libexpat.so.0 => 。 ./lib/libexpat.so.0(0x00007f78c492a000)

任意のアイデア?

よろしく

ローラン

答えて

0

私は説明を見つける:打ち鳴らすには(たとえライブラリが明示的に自分で含まれていますが、[要]によって参照されないELFバイナリの[必要です]セクション内のすべてのライブラリーを置きます打ち鳴らすから

readelf -d my_prog 

Dynamic section at offset 0x9cb548 contains 46 entries: 
    Tag  Type       Name/Value 
0x0000000000000001 (NEEDED)    Shared library: [libadeversion.so] 
0x0000000000000001 (NEEDED)    Shared library: [libuuid.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [libsqlite3.so] 
0x0000000000000001 (NEEDED)    Shared library: [libpthread.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libaprutil-1.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libapr-1.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libavahi-client.so.3] 
0x0000000000000001 (NEEDED)    Shared library: [libavahi-common.so.3] 
0x0000000000000001 (NEEDED)    Shared library: [libdl.so.2] 
0x0000000000000001 (NEEDED)    Shared library: [libaio.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [librt.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [lib_adm64.so] 
0x0000000000000001 (NEEDED)    Shared library: [lib_dict64.so] 
0x0000000000000001 (NEEDED)    Shared library: [lib_rdm64.so] 
0x0000000000000001 (NEEDED)    Shared library: [lib_dbr64.so] 
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] 
0x000000000000001d (RUNPATH)   Library runpath: [${ORIGIN}/../lib/:$ORIGIN/../lib/:../lib/] 

::私はGCCから

例が含まれるライブラリのセクション

readelf -d my_prog 

Dynamic section at offset 0xa7bae8 contains 54 entries: 
    Tag  Type       Name/Value 
0x0000000000000001 (NEEDED)    Shared library: [libadeversion.so] 
0x0000000000000001 (NEEDED)    Shared library: [libuuid.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [libsqlite3.so] 
0x0000000000000001 (NEEDED)    Shared library: [libpthread.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libaprutil-1.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libexpat.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libapr-1.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libavahi-client.so.3] 
0x0000000000000001 (NEEDED)    Shared library: [libavahi-common.so.3] 
0x0000000000000001 (NEEDED)    Shared library: [libdl.so.2] 
0x0000000000000001 (NEEDED)    Shared library: [libaio.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [libcrypt.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [librt.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [lib_adm64.so] 
0x0000000000000001 (NEEDED)    Shared library: [lib_dict64.so] 
0x0000000000000001 (NEEDED)    Shared library: [lib_rdm64.so] 
0x0000000000000001 (NEEDED)    Shared library: [lib_rpc64.so] 
0x0000000000000001 (NEEDED)    Shared library: [lib_sql64.so] 
0x0000000000000001 (NEEDED)    Shared library: [lib_rdbc64.so] 
0x0000000000000001 (NEEDED)    Shared library: [lib_rm64.so] 
0x0000000000000001 (NEEDED)    Shared library: [lib_ncp64.so] 
0x0000000000000001 (NEEDED)    Shared library: [lib_cmp64.so] 
0x0000000000000001 (NEEDED)    Shared library: [lib_repfltr64.so] 
0x0000000000000001 (NEEDED)    Shared library: [lib_expat64.so] 
0x0000000000000001 (NEEDED)    Shared library: [lib_cncp64.so] 
0x0000000000000001 (NEEDED)    Shared library: [lib_dbr64.so] 
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] 
0x000000000000001d (RUNPATH)   Library runpath: [${ORIGIN}/../lib/:$ORIGIN/../lib/:../lib/] 

そして、もう一つのDLLが見つからない1 libexpat含まれます(あまりにも自分のRUNPATHであることを持つことができます)

readelf -d ../lib/libaprutil-1.so.0 

Dynamic section at offset 0x1e698 contains 29 entries: 
    Tag  Type       Name/Value 
0x0000000000000001 (NEEDED)    Shared library: **[libexpat.so.0]** 
0x0000000000000001 (NEEDED)    Shared library: [libapr-1.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libuuid.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [librt.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [libcrypt.so.1] 
0x0000000000000001 (NEEDED)    Shared library: [libpthread.so.0] 
0x0000000000000001 (NEEDED)    Shared library: [libdl.so.2] 
0x0000000000000001 (NEEDED)    Shared library: [libc.so.6] 
0x000000000000000e (SONAME)    Library soname: [libaprutil-1.so.0] 

をしかしRUNPATHしかないDLLによってバイナリで使用されます。

2解決策: - libaprutil-1.so.0でRUNPATHを追加して、強制的に "。"のライブラリをインクルードします。 - 明示的に私のビルドで不足しているDLLをすべて追加します。

希望します。

関連する問題