當我編寫代碼安裝在目標機器上時,我想知道依賴關係,並注意到沒有需要的openssl庫。我不知道,因爲我知道我使用OpenSSL:哪個庫是MD5()函數?
#include <openssl/md5.h>
...
MD5(a, b, c);
...
出乎我的意料,看來我們只有對libc的鏈接。 MD5是否真的在libc中實現,而不是在某些libssl庫中實現?
objdump的給我講述了鏈接庫中的信息:
Dynamic Section:
NEEDED libQtCore.so.4
NEEDED libstdc++.so.6
NEEDED libgcc_s.so.1
NEEDED libc.so.6
SONAME libcontent.so
至於建議由noloader我試着用LDD,仍然看不到庫,將使意義MD5。 libcontent.so直接使用MD5()...
ldd ../BUILD/snapwebsites/plugins/content/libcontent.so
linux-vdso.so.1 => (0x00007fff4f3ff000)
libQtCore.so.4 => /usr/lib/x86_64-linux-gnu/libQtCore.so.4 (0x00007ff37ad0f000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff37aa0c000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff37a7f5000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff37a42c000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff37a20f000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff379ff7000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff379df3000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007ff379af7000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ff3798ee000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff3795e9000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff37b5e5000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007ff3793a9000)
而且,只是爲了確保,我想對內容庫nm和我能看到MD5項:
w _ITM_registerTMCloneTable
00000000003c9468 d __JCR_END__
00000000003c9468 d __JCR_LIST__
w _Jv_RegisterClasses
U MD5 <---- it's here...
U [email protected]@GLIBC_2.2.5
w pthread_cancel
U [email protected]@GLIBC_2.2.5
你怎麼知道這個二進制文件只是針對libc的聯繫? – delnan
你會使用MD5做什麼? – ErstwhileIII
@delnan,我使用objdump -x的輸出進行了更新。 –