반응형
Executable and Linking Format(ELF)
UNIX / LINUX 기반에서 사용되는 실행 및 링킹 파일 포맷을 ELF라 하며, 하나의 ELF Header와 파일데이터로 구성됩니다.
- ELF header
: ELF 파일의 Metadata를 가진 Header - Segment
: 동일한 메모리 속성(read-only, writable, ...)을 가진 하나 또는 그 이상의 섹션의 집합 - Section
: 특정 정보(machine instructions, symbol table, ..)를 포함하고 있는 ELF file의 작은 조각 - Symbol
: ELF file내에 저장된 함수 또는 변수의 디스크립션입니다. 간단한 함수 또는 변수의 정보를 포함하고 있습니다. - Object file
: 컴퓨터에서 읽을 수 있는 소스파일 버전입니다. Object file은 소스파일의 전역, 정적 변수 이름같은 심볼 정보들이 아직 남아있는 파일입니다. 하지만 이 파일은 메모리에 어떻게 로드되어야 하는지 정보가 명시되어 있지 않기 때문에 직접 실행은 불가능합니다. - Shared Library
: 하나 또는 그 이상의 Object 파일의 심볼들로 구성된 파일입니다. 주소 공간 어디에든 로드 되어질 수 있습니다. - Executables
: Shared Library와 매우 유사하지만 메모리 내 특정 주소에 로드될 수 있는 파일입니다. 프로그램 시작을 위한 함수를 가지고 있습니다. 해당 함수에서 Executables 파일은 시작됩니다. - Core Files
: ELF 의 특별한 타입의 파일입니다. 실행된 프로세스에 의해 사용된 여러 메모리 세그먼트 들을 포함한 메모리 이미지 정보를 가지고 있습니다. - Linking
: object 파일들로 부터 심볼 정도들을 가져와 특정 순서에 맞게 정렬을 해주는 과정입니다. 오브젝트의 각 섹션들을 공유 라이브러리나 실행파일 내에 각 세그먼트내에 정렬해 주는 과정입니다.
ELF 파일 확인 방법(readelf)
readelf : ELF 파일 정보를 확인 할수 있는 도구
- 해더 정보 조회
- readelf -f ( 파일 해더 조회)
- readelf -l (프로그램 해더 조회)
- readelf -S (섹션 해더 조회)
- readelf -e (전체 해더 조회)
- elf 정보 조회
- readelf -s (심볼 테이블 조회)
- readelf -r (재배치 정보 조회)
- readelf -d (동적 세그먼트 조회)
- readelf -a (elf의 모든 정보 조회)
참고
- [Wikipedia] Executable and Linkable Format: https://en.wikipedia.org/wiki/Executable_and_Linkable_Format
- [ELF] ELF Header: https://sonseungha.tistory.com/460
- [Linux] readelf 사용법: https://zeromini0.tistory.com/entry/Linux-readelf-%EC%82%AC%EC%9A%A9%EB%B2%95
반응형
'Study: ComputerScience(CS) > CS: Linux' 카테고리의 다른 글
[Linux] NTP 서버 시간 동기화 (0) | 2022.09.28 |
---|---|
[Linux] C++ 컴파일러에 대하여 (feat. clang/LLVM, clang-format, clang-tidy) (0) | 2022.08.29 |
[Linux] 일정 시간마다 작업 실행시키기(crontab) (0) | 2022.08.12 |
[Linux] ln 명령어(feat. 리눅스 파일 링킹): 하드링크(Hard Link) VS 심볼릭링크(Symbolic Link) (0) | 2022.08.09 |
[Linux] Graceful Shutdown이란? (feat. SIGINT/SIGTERM/SIGKILL + signal handler) (0) | 2022.08.05 |