ELF(Executable and Link Format)는 Unix 계열 운영 체제의 실행 파일, 개체 코드, 공유 라이브러리 및 코어 덤프에 대한 일반적인 표준 파일 형식입니다. IBM, AMD, Intel, ARM 및 MC68K를 포함한 여러 다른 프로세서에서 사용되는 표준 바이너리 파일 형식이며 Linux, Solaris, HP-UX 및 AIX를 포함한 거의 모든 Unix 버전에서 사용됩니다. ELF는 원래 1993년 Unix System Laboratories에서 System V Release 4(SVR) 구현의 일부로 개발되었으며 현재 모든 주요 Unix 계열 운영 체제에서 지원됩니다.
ELF는 계층적 모듈식 파일 형식이며 헤더, 프로그램 세그먼트, 섹션, 기호 테이블 및 재배치 테이블과 같은 핵심 요소를 포함합니다. 헤더는 실행 파일을 로드하고 관리하는 방법에 대한 정보를 제공하는 시스템별 필드로 구성됩니다. 프로그램 세그먼트에는 데이터를 저장하는 명령(코드)과 메모리 영역이 포함됩니다. 섹션은 프로그램, 데이터 세그먼트 재배치 및 기호 정의를 포함하여 파일 내용에 관한 더 자세한 정보를 제공합니다. 기호 테이블에는 모듈 내의 모든 기호(전역 및 정적 변수 포함)가 나열되며 재배치 테이블에는 파일을 로드하는 동안 주소 재배치에 대한 세부 정보가 포함됩니다.
ELF는 서로 다른 프로세서 아키텍처 간에 호환되는 바이너리에 대한 유연성을 제공하고 무단 수정으로부터 코드와 데이터에 대해 우수한 수준의 보호를 제공합니다. 또한 ELF의 기능을 사용하면 다양한 CPU 아키텍처와 운영 체제 간에 프로그램을 더 쉽게 공유할 수 있습니다. 또한 ELF 형식은 외부 기호를 확인하고 코드를 공유하여 실행 가능한 코드의 중복을 방지하는 기능과 같은 최신 운영 체제에 중요한 기능도 제공합니다.
Mach-O와 같은 다른 개체 파일 형식이 인기를 얻고 있지만 ELF는 여전히 널리 사용됩니다. 다른 파일 형식의 일부 장점에도 불구하고 ELF는 Linux, Solaris 및 기타 Unix 계열 운영 체제를 지원하여 실행 가능 파일 및 공유 개체 파일 형식의 선도적인 표준으로 남아 있습니다.