2017-12-12 28 views
0

libdllibltdlの違いは何ですか?私はそれらの両方へのリンクlibodbclibdlとlibltdlの違いは何ですか?

ldd /usr/lib/x86_64-linux-gnu/libodbc.so.2 | grep -i dl 
    libltdl.so.7 => /usr/lib/x86_64-linux-gnu/libltdl.so.7 (0x00007f411b822000) 
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f411b01f000) 

は、私は再びPerlのリンクlibdlを知っていることに気づきました。私はシステム上の2つの別々の共有オブジェクトを参照してください

ldd /usr/bin/perl | grep -i dl 
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f55faa2e000) 

ls -lah /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1 /lib/x86_64-linux-gnu/libdl-2.26.so 
-rw-r--r-- 1 root root 39K Aug 20 2016 /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1 
-rw-r--r-- 1 root root 15K Oct 11 15:21 /lib/x86_64-linux-gnu/libdl-2.26.so 

は、彼らあまりにも似たようなものに両方のリンク、

ldd /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1 
    linux-vdso.so.1 => (0x00007ffc3e66b000) 
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007efcbad4c000) 
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007efcba96c000) 
    /lib64/ld-linux-x86-64.so.2 (0x00007efcbb15a000) 
ldd /lib/x86_64-linux-gnu/libdl-2.26.so 
    linux-vdso.so.1 => (0x00007ffe7889c000) 
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbc9a14e000) 
    /lib64/ld-linux-x86-64.so.2 (0x00007fbc9a732000) 

は何libltdlが違いますの?

+0

@SoronelHaetirこの結果はどのような結果になっていますか? –

+2

1つはglibcの一部で、もう1つはlibtoolの一部です。 – stark

+4

@EvanCarroll:質問にリンクした 'libltdl'ページがあなたの質問に答えます:' libltdl'は移植可能なダイナミックリンクインターフェースを提供します。 Linuxでは、 'libdl'のラッパーです。 'ldd/usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1'を実行すると' libdl'が必要です。 –

答えて

1

それは(、WindowsののLoadLibraryなどを例えばPOSIXのdlopenなど)を、同じまたは類似した機能を持っている多くの異なるプラットフォーム用のlibdl API(例えばdlopen)を提供するためにlibtoolの機能だし、リンカーのプラットフォーム用の共有ライブラリのエミュレーション動的リンクをサポートしていません。

私はLinuxのボックスでlibodbc.so.2を分析しました。 nm -Dlibodbc.so.2のみlibltdlシンボルを示しているようだ、とobjdump -pNEEDEDセクションでのみlibltdl.so.7を持っていると思われるので、ldd、この場合には、完全に正確な情報をプリントアウトしていないようです(あなたのgrep出力は、私が見たものに似て表示されます)。

関連する問題