리눅스
ldd명령어 , nm명령어
정지홍
2024. 8. 27. 13:43
ldd명령어는 지정한 프로그램의 라이브러리 의존성을 확인할 때 사용한다.
path는 /usr/bin/ldd이다.
ex) 아래는 attackme라는 프로그램의 의존성을 확인함.
[level19@ftz level19]$ ldd attackme
libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
ex) ls명령어의 의존성을 확인함.
# -v 옵션은 상세 정보를 출력
[level19@ftz level19]$ ldd -v /bin/ls
libtermcap.so.2 => /lib/libtermcap.so.2 (0x4001e000)
libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Version information:
/bin/ls:
libc.so.6 (GLIBC_2.2.3) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.1.3) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.3) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.2) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/tls/libc.so.6
/lib/libtermcap.so.2:
libc.so.6 (GLIBC_2.1.3) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/tls/libc.so.6
/lib/tls/libc.so.6:
ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.0) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
[level19@ftz level19]$ ldd -d /bin/ls
libtermcap.so.2 => /lib/libtermcap.so.2 (0x4001e000)
libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
[level19@ftz level19]$ ldd -r /bin/ls
libtermcap.so.2 => /lib/libtermcap.so.2 (0x4001e000)
libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
nm명령어
오브젝트 파일을 대상으로 파일에 포함된 심볼의 리스트를 볼수있다.
nm 대상파일
[심볼 값][심볼 클래스][심볼명]
42120840 r yytranslate
42131d64 b zapchar
421239bc r zeroes
42123a20 r zeroes
42131a38 b zone_names
nm -r
역순 출력
nm --size-sort
크기가 큰 순으로 출력
nm --size-sort -r
크기가 작은 순서대로 출력
nm -f sysv
# sysv형식으로 출력
nm -f posix
# posix형식으로 출력
nm -f bsd
# bsd형식으로 출력