analyze about ldd result

문득 문제를 풀다가 ldd 명령어를 사용하다 보니

C
root@2d8e2adb234e:/home/linux_forest# which id
/usr/bin/id
root@2d8e2adb234e:/home/linux_forest# ldd /usr/bin/id
	linux-vdso.so.1 (0x00007ffeb7715000)
	libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007c8c6d31d000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007c8c6cf2c000)
	libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007c8c6ccbb000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007c8c6cab7000)
	/lib64/ld-linux-x86-64.so.2 (0x00007c8c6d750000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007c8c6c898000)
root@2d8e2adb234e:/home/linux_forest# 

이런식으로 엄청나게 많은 파일들이 연관되어 있음을 확인 할 수 있었다. 과연 각각의 파일들은 어떤 방식으로 사용되는 것일까?

linux-vdso.so.1

VDSO(Virtual Dynamic Shared Object) 커널이 사용자 공간에 제공하는 가상 라이브러리. gettimeofday, clock_gettime 등의 시스템 호출을 빠르게 실행하기 위한 인터페이스. → 실제 파일 존재 x

libselinux.so.1

SELinux(Security Enhanced Linux) 보안 정책 관련 함수 제공 is_selinux_enabled(), getcon() 등의 함수가 대표적이다.  

libc.so.6

GNU C 표준 라이브러리 → 주요 함수 다 여기에 있음

libpcre.so.3

Perl Compatible Regular Expressions ( 정규표현식) 에 대한 라이브러리

/lib64/ld-linux-x86-64.so.2

프로그램을 시작할 때 동적 라이브러리 로더 → 동적 링킹 프로그램의 첫 번째 진입점

libpthread.so.0

POSIX 스레드 라이브러리 (pthread)