컴퓨터공부/Linux & Unix

ELF(Executable and Linking Format)

achivenKakao 2007. 3. 8. 06:53
ELF는 Executable and Linking Format의 이니셜이다. 이 포맷은 Linux를 비롯해서 Unix 플랫폼의 객체 파일에 사용된다. 기본적으로 세가지 타입의 파일이 있다

1. relocatable 파일은 실행 파일이나 공유객체 파일, 또는 다른 relocatable 파일을 만들기 위해 다른 객체 필드와 링크 될 수 있는 코드와 데이터를 가지고 있다.
2. 실행파일 에는 실행할 준비가 되어있는 프로그램이 있다.
3. 공유 객체 파일에는 다른 공유 객체나 relocatable 파일로 링크될 수 있는 코드와 데이터가 있다.

모든 파일에는 ELF 헤더가 있다. 이 ELF 헤더는 파일의 처음부분에 있고 나머지 파일들에게 로드맵 역할을 한다.
섹션은 최소의 단위를 나타내며 파일에서 실행될 수 있고 링크에 필요한 정보가 있다. 섹션 헤더 테이블에는 파일의 섹션에 대한 정보를 포함하고 있다.
프로그램 헤더 테이블이 존재한다면 프로세스 이미지를 만드는 방법이 나온다.
프로세스 이미지는 객체파일이 실행파일이 될 때 사용된다.
exec 프로그램은 프로그램 헤더 테이블을 사용하여 프로세스를 복제(fork) 한다.
ELF 헤더의 위치가 파일에 항상 존재하는지 주목해야 한다.
다른 부분들이 다른 장소에 나타날 수 있다.

--------------------------------------------------------------------------
첨언하면....
elf의 내용을 보는 유틸리티로는 readelf가 있으며, objdump -p 로도 유용한 정보를 볼 수있다.