동적 기호 테이블 항목을 인쇄하는 objdump -T
GNU 유틸리티에서 실행되는 다음의 잘린 출력을 고려하십시오 .ls
/usr/bin/ls: file format elf64-x86-64
DYNAMIC SYMBOL TABLE:
0000000000000000 DF *UND* 0000000000000000 (GLIBC_2.3) __ctype_toupper_loc
0000000000000000 DF *UND* 0000000000000000 (GLIBC_2.2.5) getenv
0000000000000000 DO *UND* 0000000000000000 (GLIBC_2.2.5) __progname
0000000000000000 DF *UND* 0000000000000000 (GLIBC_2.2.5) sigprocmask
0000000000000000 DF *UND* 0000000000000000 (GLIBC_2.3.4) __snprintf_chk
0000000000000000 DF *UND* 0000000000000000 (GLIBC_2.2.5) raise
0000000000000000 DF *UND* 0000000000000000 (GLIBC_2.34) __libc_start_main
0000000000000000 DF *UND* 0000000000000000 (GLIBC_2.2.5) abort
0000000000000000 DF *UND* 0000000000000000 (GLIBC_2.2.5) __errno_location
0000000000000000 DF *UND* 0000000000000000 (GLIBC_2.2.5) strncmp
0000000000000000 w D *UND* 0000000000000000 Base _ITM_deregisterTMCloneTable
Base
마지막 행과 열 6은 무엇을 의미하나요? 예를 들어, 이것이 함수 버전 (GLIBC_2.2.5)
이라는 것이 분명합니다 . 그러나 이러한 함수는 어떤 외부 라이브러리에 정의되어 있습니까? 이것을 이해하는 데 도움이 될 것입니다.glibc
strncmp
Base
답변1
Base
기호와 연관된 버전이 없음을 의미합니다.즉ls
기호를 제공하는 라이브러리 는 여러 버전(또는 기호 자체의 경우 ls
단일 버전)을 제공하지 않습니다. ls
를 사용하여 사용된 라이브러리를 볼 수 있습니다 ldd /bin/ls
.
바라보다ldd 출력에 여러 GLIBC 버전이 있다는 것은 무엇을 의미합니까?더 알아보기.