(동적 링커 / 로더) /bin/bash
를 포함하는 의 공유 객체 종속성을 고려하십시오 /lib64/ld-linux-x86-64.so.2
.
ldd /bin/bash
linux-vdso.so.1 (0x00007fffd0887000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f57a04e3000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f57a04de000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f57a031d000)
/lib64/ld-linux-x86-64.so.2 (0x00007f57a0652000)
검사 /lib64/ld-linux-x86-64.so.2
는 다음과의 심볼릭 링크임을 보여줍니다 /lib/x86_64-linux-gnu/ld-2.28.so
.
ls -la /lib64/ld-linux-x86-64.so.2
lrwxrwxrwx 1 root root 32 May 1 19:24 /lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-2.28.so
또한 file
보고서 /lib/x86_64-linux-gnu/ld-2.28.so
자체는 동적으로 연결됩니다.
file -L /lib64/ld-linux-x86-64.so.2
/lib64/ld-linux-x86-64.so.2: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=f25dfd7b95be4ba386fd71080accae8c0732b711, stripped
알고 싶습니다 :
- 동적 링커 / 로더 (
/lib64/ld-linux-x86-64.so.2
) 자체를 어떻게 동적으로 링크 할 수 있습니까? 런타임에 자체적으로 연결됩니까? /lib/x86_64-linux-gnu/ld-2.28.so
.out 바이너리 (man ld.so
) 를 처리하도록 문서화 되었지만/bin/bash
ELF 실행 파일입니까?
프로그램 ld.so는 오래 전에 사용 된 형식 인 a.out 바이너리를 처리합니다. ld-linux.so * (libc5의 경우 /lib/ld-linux.so.1, glibc2의 경우 /lib/ld-linux.so.2)는 모든 사람들이 수년간 사용해 온 ELF를 처리합니다.
/lib/x86_64-linux-gnu/ld-2.28.so
, 데비안 10 버스터)
file
합니다. 정적 바이너리를 정의하는 방법과 실제 상황에 대한 잘못된 의견 사이에 혼란스러워 했습니다 ld-2.28.so
... 차별화 요소는 PT_DYNAMIC
입니다.