2017-12-12 4 views
0

libdllibltdl의 차이점은 무엇입니까? 난 그냥 그libdl과 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) 

의 모두 libodbc 링크가 내가 libdl 다시 펄 링크를 알고있는 것으로 나타났습니다. 나는 시스템에 두 개의 별도 공유 객체를 참조

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가 다른 점은?

그것은 (예를 들어, POSIX의 dlopen 등 윈도우의 LoadLibrary 등) libtool의 기능이 동일하거나 유사한 기능이 다양한 플랫폼에 대한 libdl API (예 : dlopen)를 제공하고, 공유 라이브러리 에뮬레이션 그 링커 플랫폼의
+0

@SoronelHaetir이 결과를 어떻게보고 있습니까? –

+2

하나는 glibc의 일부이고 다른 하나는 libtool의 일부입니다. – stark

+4

@EvanCarroll : 질문에 링크 된'libltdl' 페이지가 여러분의 질문에 대한 답변을 제공합니다 :'libltdl'은 휴대용 동적 연결 인터페이스를 제공합니다. 리눅스에서는'libdl'에 대한 래퍼입니다. 'ldd/usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1'을 실행하면'libdl'이 필요하다는 것을 알 수 있습니다. –

답변

1

동적 연결을 지원하지 않습니다.

내 리눅스 박스에서 libodbc.so.2에 대한 약간의 분석을했습니다. nm -Dlibodbc.so.2libltdl 기호를 표시하는 것, 그리고 objdump -pNEEDED 부분 만 libltdl.so.7을 갖고있는 것 같아요, 그래서 ldd이 경우 완전히 정확한 정보를 인쇄하지 않는 것 (귀하의 grep 출력은 내가 보는 것과 유사하게 나타납니다).

관련 문제