실행 파일 및 링크 형식

Executable and Linkable Format
실행 파일 및 링크 형식
파일 이름 확장자
none, .axf, .bin, .elf, .o, .out, .prx, .timeout, .ko, .mod.so
매직 넘버0x7F 'E' 'L' 'F'
개발자UNIX 시스템 연구소[1]: 3
포맷의 종류바이너리, 실행 파일, 오브젝트, 공유 라이브러리, 코어 덤프
컨테이너:많은 실행 가능한 바이너리 형식
ELF 파일에는 두 가지 뷰가 있습니다.프로그램 헤더는 런타임에 사용된 세그먼트를 표시하는 반면 섹션 헤더는 섹션 세트를 나열합니다.

컴퓨팅에서 실행 파일연결 형식[2](ELF, 이전 이름 확장 가능 링크 형식)은 실행 파일, 개체 코드, 공유 라이브러리코어 덤프의 일반적인 표준 파일 형식입니다.System V Release 4(SVR4)[3]라는 이름의 Unix 운영체제버전의 Application Binary Interface(ABI; 응용 프로그램 바이너리 인터페이스) 사양에 처음 공개되었으며, 이후 Tool Interface [1]Standard에 공개되어 Unix 시스템의 여러 벤더 사이에서 빠르게 받아들여졌습니다.1999년 86오픈 프로젝트에 의해 x86 프로세서의 Unix 및 Unix 유사 시스템의 표준 바이너리 파일 포맷으로 선택되었습니다.

설계상 ELF 형식은 유연하고 확장 가능하며 크로스 플랫폼입니다.예를 들어 다양한 엔디안니스와 주소 크기를 지원하므로 특정 중앙 처리 장치(CPU)나 명령 집합 아키텍처를 배제하지 않습니다.이를 통해 다양한 하드웨어 플랫폼의 다양한 운영 체제에서 채택할 수 있게 되었습니다.

파일 레이아웃

각 ELF 파일은 1개의 ELF 헤더로 구성되며 그 다음에 파일 데이터가 이어집니다.데이터에는 다음이 포함됩니다.

  • 0개 이상의 메모리 세그먼트를 설명하는 프로그램 헤더 테이블
  • 섹션 헤더 테이블: 0개 이상의 섹션을 설명합니다.
  • 프로그램 헤더 테이블 또는 섹션 헤더 테이블의 엔트리에 의해 참조되는 데이터
키 엔트리가 강조 표시된 ELF 파일의 구조

세그먼트에는 파일의 런타임 실행에 필요한 정보가 포함되어 있으며 섹션에는 링크 및 재배치에 필요한 중요한 데이터가 포함되어 있습니다.파일 전체의 바이트는 최대 1개의 섹션이 소유할 수 있으며, 임의의 섹션이 소유하지 않는 고립된 바이트가 발생할 수 있습니다.

00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 .ELF............

00000010 02 00 3e 00 01 00 00 00 c5 48 40 00 00 00 00 00 ..>......H@.....

Example hexdump of ELF file header[4]

파일 헤더

ELF 헤더는 32비트주소를 사용할지 64비트주소를 사용할지를 정의합니다.헤더에는 이 설정의 영향을 받는 3개의 필드가 포함되어 있으며, 그 뒤에 오는 다른 필드는 오프셋됩니다.ELF 헤더는 32비트 바이너리와 64비트 바이너리의 경우 각각 52바이트 또는 64바이트입니다.

ELF[5] 헤더
오프셋 크기(바이트) 들판 목적
32비트 64비트 32비트 64비트
0x00 4 e_ident[특정]EI_MAG0] ~e_ident[EI_MAG3] 0x7F이어서ELF(45 4c 46)를 ASCII지정합니다.이 4바이트는 매직넘버를 구성합니다.
0x04 1 e_ident[특정]EI_CLASS] 이 바이트는 다음 중 하나로 설정됩니다.1또는2각각 32비트 형식 또는 64비트 형식을 나타냅니다.
0x05 1 e_ident[특정]EI_DATA] 이 바이트는 다음 중 하나로 설정됩니다.1또는2각각 거의 또는 큰 엔디안을 나타내지 않습니다.이는 오프셋으로 시작하는 멀티바이트 필드의 해석에 영향을 미칩니다.0x10.
0x06 1 e_ident[특정]EI_VERSION] 로 설정1ELF의 원래 버전 및 현재 버전의 ELF에 대해 설명합니다.
0x07 1 e_ident[특정]EI_OSABI] 타겟 운영체제 ABI를 식별합니다.
가치 ABI
0x00 시스템 V
0x01 HP-UX
0x02 넷BSD
0x03 리눅스
0x04 GNU 허드
0x06 솔라리스
0x07 AIX(몬터레이)
0x08 IRIX
0x09 FreeBSD
0x0A 트루64
0x0B 노벨 모데스토
0x0C 오픈BSD
0x0D 오픈VMS
0x0E 논스톱 커널
0x0F AROS
0x10 FenixOS
0x11 Nuxi 클라우드ABI
0x12 Stratus Technologies OpenVOS
0x08 1 e_ident[특정]EI_ABVIRSION] 또, ABI 버전을 지정합니다.이 해석은 대상 ABI에 따라 달라집니다.Linux 커널(최소 2.6 이후)에는 [6]정의되어 있지 않기 때문에 정적으로 연결된 실행 파일에서는 무시됩니다.이 경우 EI_PAD의 오프셋과 사이즈는 다음과 같습니다.8.

e_ident[의 경우 glibc 2.12+EI_OSABI] == 3은 이 필드를 다이내믹링커[7]ABI 버전으로 취급합니다.다이나믹 링커의 [8]기능 목록을 정의하고 e_ident를 처리합니다.EI_ABIRSION]은 공유 객체(실행 가능 또는 동적 라이브러리)에 의해 요구되며 알 수 없는 기능이 요구될 경우 로드를 거부합니다(예: e_ident[).EI_ABIRSION]은 기존 기능 [9]중 가장 큰 크기입니다.

0x09 7 e_ident[특정]EI_PAD] 예약된 패딩 바이트.현재 미사용.0으로 채워야 하며 읽을 때 무시해야 합니다.
0x10 2 e_type 오브젝트 파일유형을 식별합니다.
가치 유형 의미.
0x00 ET_NONE 알 수 없는.
0x01 ET_REL 재배치 가능한 파일.
0x02 ET_EXEC 실행 파일
0x03 ET_DYN 공유 객체
0x04 ET_CORE 코어 파일
0xFE00 ET_LOOS 예약된 포함 범위.운영 체제에 따라 다릅니다.
0xFEFF ET_HIOS
0xFF00 ET_LOPROC 예약된 포함 범위.프로세서 고유.
0xFFFF ET_HIPROC
0x12 2 e_머신 대상 명령 집합 아키텍처를 지정합니다.예를 들어 다음과 같습니다.
가치 ISA
0x00 특정 명령 집합 없음
0x01 AT&T WE 32100
0x02 SPARC
0x03 x86
0x04 Motorola 68000 (M68k)
0x05 Motorola 88000 (M88k)
0x06 인텔 MCU
0x07 인텔 80860
0x08 MIPS
0x09 IBM 시스템/370
0x0A MIPS RS3000 리틀엔디안
0x0B - 0x0D 향후 사용을 위해 예약됨
0x0E 휴렛패커드 PA-RISC
0x0F 향후 사용을 위해 예약됨
0x13 인텔 80960
0x14 Power PC
0x15 PowerPC(64비트)
0x16 S390(S390x 포함)
0x17 IBM SPU/SPC
0x18 - 0x23 향후 사용을 위해 예약됨
0x24 NEC V800
0x25 후지쯔 FR20
0x26 TRW RH-32
0x27 모토로라 RCE
0x28 ARM(ARMv7/Aarch32까지 지원)
0x29 디지털 알파
0x2A 슈퍼H
0x2B SPARC 버전9
0x2C Siemens TriCore 내장 프로세서
0x2D Argonaut RISC 코어
0x2E 히타치 H8/300
0x2F 히타치 H8/300H
0x30 히타치 H8S
0x31 히타치 H8/500
0x32 IA-64
0x33 스탠포드 MIPS-X
0x34 모토로라 콜드파이어
0x35 모토로라 M68HC12
0x36 후지쯔 MMA 멀티미디어 액셀러레이터
0x37 Siemens PCP
0x38 Sony nCPU 내장 RISC 프로세서
0x39 Denso NDR1 마이크로프로세서
0x3A Motorola Star*Core 프로세서
0x3B 도요타 ME16 프로세서
0x3C ST마이크로일렉트로닉스 ST100 프로세서
0x3D 어드밴스트 로직 코퍼레이션TinyJ 임베디드 프로세서 패밀리
0x3E AMD x86-64
0x3F Sony DSP 프로세서
0x40 디지털 이그니션 코퍼레이션 PDP-10
0x41 디지털 이그니션 코퍼레이션 PDP-11
0x42 Siemens FX66 마이크로컨트롤러
0x43 ST마이크로일렉트로닉스 ST9+ 8/16비트 마이크로컨트롤러
0x44 STMicroelectronics ST7 8비트 마이크로컨트롤러
0x45 Motorola MC68HC16 마이크로컨트롤러
0x46 Motorola MC68HC11 마이크로컨트롤러
0x47 Motorola MC68HC08 마이크로컨트롤러
0x48 Motorola MC68HC05 마이크로컨트롤러
0x49 실리콘 그래픽스 SVx
0x4A ST마이크로일렉트로닉스 ST19 8비트 마이크로컨트롤러
0x4B 디지털 VAX
0x4C Axis Communications 32비트 임베디드 프로세서
0x4D Infineon Technologies 32비트 임베디드 프로세서
0x4E Element 14 64비트 DSP 프로세서
0x4F LSI Logic 16비트 DSP 프로세서
0x8C TMS320C6000 패밀리
0xAF MCST Elbrus e2k
0xB7 ARM 64비트(ARMv8/Aarch64)
0xDC Zilog Z80
0xF3 RISC-V
0xF7 버클리 패킷필터
0x101 WDC 65C816
0x14 4 e_version 로 설정1ELF의 원래 버전입니다.
0x18 4 8 e_엔트리 프로세스 실행을 시작하는 진입점의 메모리 주소입니다.이 필드의 길이는 앞서 정의한 형식(바이트 0x04)에 따라 32비트 또는 64비트입니다.파일에 연결된 진입점이 없는 경우 0이 유지됩니다.
0x1C 0x20 4 8 e_phoff 프로그램 헤더 테이블의 시작을 가리킵니다.보통 이 파일 머리글 바로 뒤에 오므로 오프셋을 만듭니다.0x34또는0x40각각 32비트 및 64비트 ELF 실행 파일의 경우.
0x20 0x28 4 8 e_shopf 섹션 헤더 테이블의 시작을 가리킵니다.
0x24 0x30 4 e_module 이 필드의 해석은 대상 아키텍처에 따라 달라집니다.
0x28 0x34 2 e_ehsize 이 헤더의 크기를 포함합니다.일반적으로 64비트의 경우 64바이트, 32비트 형식의 경우 52바이트입니다.
0x2A 0x36 2 e_phentsize 프로그램 헤더 테이블엔트리의 크기를 포함합니다.
0x2C 0x38 2 e_phnum 프로그램 헤더 테이블의 엔트리 수를 포함합니다.
0x2E 0x3A 2 e_sysize 섹션 헤더 테이블엔트리의 크기를 포함합니다.
0x30 0x3C 2 e_shnum 섹션 헤더 테이블의 엔트리 수가 포함됩니다.
0x32 0x3E 2 e_shstrndx 섹션 이름을 포함하는 섹션 헤더 테이블 항목의 인덱스를 포함합니다.
0x34 0x40 ELF 헤더의 끝(사이즈).

프로그램 헤더

프로그램 헤더 테이블은 프로세스 이미지 작성 방법을 시스템에 알려줍니다.이것은 파일 오프셋e_phoff 에 있으며, e_phnum 엔트리로 구성되어 있으며 각각 크기가 e_phentsize 입니다.레이아웃은 32비트 ELF와 64비트 ELF에서는 약간 다릅니다.이는 p_flag가 정렬상의 이유로 다른 구조 위치에 있기 때문입니다.각 엔트리는 다음과 같이 구성됩니다.

프로그램[10] 헤더
오프셋 크기(바이트) 들판 목적
32비트 64비트 32비트 64비트
0x00 4 p_type 세그먼트의 유형을 식별합니다.
가치 이름. 의미.
0x00000000 PT_NULL 프로그램 헤더 테이블 항목이 사용되지 않았습니다.
0x00000001 PT_로드 로드 가능한 세그먼트.
0x00000002 PT_Dynamic 다이내믹 링크 정보
0x00000003 PT_INTERP 인터프리터 정보
0x00000004 PT_주의 보조 정보
0x00000005 PT_SHLIB 예약 완료.
0x00000006 PT_PHDR 프로그램 헤더 테이블 자체를 포함하는 세그먼트.
0x00000007 PT_TLS 스레드 로컬 스토리지 템플릿.
0x60000000 PT_LOOS 예약된 포함 범위.운영 체제에 따라 다릅니다.
0x6FFFFFFF PT_HIOS
0x70000000 PT_LOPROC 예약된 포함 범위.프로세서 고유.
0x7FFFFFFF PT_HIPROC
0x04 4 p_models(p_models) 세그먼트 의존 플래그(64비트 구조의 위치).
0x04 0x08 4 8 p_models(p_models) 파일 이미지에서 세그먼트의 오프셋입니다.
0x08 0x10 4 8 p_vaddr 메모리 내 세그먼트의 가상 주소입니다.
0x0C 0x18 4 8 p_paddr 물리 주소가 관련된 시스템의 경우 세그먼트의 물리 주소용으로 예약되어 있습니다.
0x10 0x20 4 8 p_filesz 파일 이미지의 세그먼트 사이즈(바이트 단위).0일 수 있습니다.
0x14 0x28 4 8 p_memsz 메모리 내 세그먼트의 크기(바이트 단위).0일 수 있습니다.
0x18 4 p_models(p_models) 세그먼트 의존 플래그(32비트 구조의 위치).
0x1C 0x30 4 8 p_align 0그리고.1정렬을 지정하지 않습니다.그렇지 않으면 p_vaddrp_offset 계수 p_align과 같은 양의 정수 2가 됩니다.
0x20 0x38 프로그램 헤더 끝(크기).

섹션 헤더

오프셋 크기(바이트) 들판 목적
32비트 64비트 32비트 64비트
0x00 4 sh_name 이 섹션의 이름을 나타내는 .shstrtab 섹션의 문자열 오프셋.
0x04 4 sh_type 이 헤더의 유형을 식별합니다.
가치 이름. 의미.
0x0 SHT_NULL 섹션 헤더 테이블 항목 미사용
0x1 SHT_ProGBITs 프로그램 데이터
0x2 SHT_SYM탭 기호 테이블
0x3 SHT_STRTAB 문자열 테이블
0x4 SHT_RELA 추가가 있는 재배치 항목
0x5 SHT_HASH 기호 해시 테이블
0x6 SHT_Dynamic 동적 링크 정보
0x7 SHT_주의 메모들
0x8 SHT_NOBITS 데이터가 없는 프로그램 공간(bss)
0x9 SHT_REL 재배치 항목, 추가 없음
0x0A SHT_SHLIB 예약필
0x0B SHT_DYNSYM 동적 링커 기호 테이블
0x0E SHT_INIT_ARray 컨스트럭터 배열
0x0F SHT_FINI_ARray 파괴자의 배열
0x10 SHT_PREINIT_ARray 프리 컨스트럭터 배열
0x11 SHT_GROUP 섹션 그룹
0x12 SHT_SYMTAB_SHNDX 확장 단면 색인
0x13 SHT_NUM 정의된 유형의 수.
0x60000000 SHT_LOOS OS 고유의 기동.
... ... ...
0x08 4 8 sh_displays(시리얼) 섹션의 Atribute를 식별합니다.
가치 이름. 의미.
0x1 SHF_WRITE 기입 가능
0x2 SHF_ALLOC 실행 중 메모리 사용
0x4 SHF_EXECINSTR 실행 파일
0x10 SHF_MERGE 병합될 수 있음
0x20 SHF_STRINGs null 종단 문자열 포함
0x40 SHF_INFO_링크 'sh_info'에 SHT 인덱스가 포함되어 있습니다.
0x80 SHF_LINK_ORDER 결합 후 순서 유지
0x100 SHF_OS_비동작 비표준 OS 고유의 처리 필요
0x200 SHF_GROUP 섹션이 그룹의 구성원입니다.
0x400 SHF_TLS 섹션 홀드 스레드-로컬 데이터
0x0FF00000 SHF_MASKOS OS 고유의
0xF0000000 SHF_MASKPROC 프로세서 고유의
0x4000000 SHF_ORDERED 특별 주문 요건(Solaris)
0x8000000 SHF_EXCLUDE 섹션은 참조 또는 할당되지 않는 한 제외됩니다(Solaris).
0x0C 0x10 4 8 sh_addr 로드된 섹션의 메모리 내 섹션 가상 주소.
0x10 0x18 4 8 sh_displays(시리얼) 파일 이미지 내의 섹션 오프셋.
0x14 0x20 4 8 sh_ 파일 이미지 섹션의 크기(바이트 단위).0일 수 있습니다.
0x18 0x28 4 sh_link 연관된 섹션의 섹션 인덱스를 포함합니다.이 필드는 섹션 유형에 따라 여러 목적으로 사용됩니다.
0x1C 0x2C 4 sh_info 섹션에 대한 추가 정보가 포함되어 있습니다.이 필드는 섹션 유형에 따라 여러 목적으로 사용됩니다.
0x20 0x30 4 8 sh_addralign 섹션의 필수 정렬이 포함되어 있습니다.이 필드는 2의 거듭제곱이어야 합니다.
0x24 0x38 4 8 사이즈 고정 크기 엔트리를 포함하는 섹션의 각 엔트리의 크기(바이트 단위)가 포함됩니다.그렇지 않으면 이 필드에 0이 포함됩니다.
0x28 0x40 섹션 헤더 끝(크기).

도구들

  • readelf는 1개 이상의 ELF 파일에 대한 정보를 표시하는 Unix 바이너리 유틸리티입니다.무료 소프트웨어 구현은 GNU Binutils에 의해 제공됩니다.
  • elfutils는 순전히 [11]Linux용 GNU Binutils 대체 도구를 제공합니다.
  • elfdump는 ELF 파일의 ELF 정보를 표시하기 위한 명령어로 Solaris 및 FreeB에서 사용할 수 있습니다.SD.
  • objdump에 ELF 파일 및 기타 오브젝트 형식에 대한 광범위한 정보를 나타냅니다. objdump는 ELF 데이터를 구조화하기 위한 백엔드로 바이너리 파일 기술자 라이브러리를 사용합니다.
  • 유닉스file유틸리티는 재배치 가능, 실행 가능 또는 공유 개체 파일의 코드가 의도된 명령 집합 아키텍처 또는 ELF 코어 덤프가 생성된 명령 집합 아키텍처를 포함하여 ELF 파일에 대한 일부 정보를 표시할 수 있습니다.

적용들

Unix 계열 시스템

다양한 환경에서 ELF 형식이 이전 실행 파일 형식을 대체했습니다.Unix 계열 운영 체제의 a.outCOFF 형식을 대체했습니다.

유니크하지 않은 채용

또한 ELF는 다음과 같은 Unix 이외의 운영 체제에서도 채택되고 있습니다.

Microsoft Windows 에서는, ELF 형식도 사용합니다만, Windows Subsystem for Linux 호환성 시스템 [17]전용입니다.

게임 콘솔

일부 게임 콘솔은 ELF를 사용합니다.

Power PC

전원으로 동작하는 기타 (운영 체제)시스템ELF를 사용하는 PC:

  • AmigaOS 4, ELF 실행 파일은 PPC 프로세서 확장 카드를 장착한 Amigas에서 사용되던 이전 확장 Hunk 형식(EHF)을 대체했습니다.
  • MorphOS
  • AROS

휴대 전화

휴대 전화 및 모바일 장치의 일부 운영 체제시스템은 ELF를 사용합니다.

  • Symbian OS v9는 ELF 파일 포맷에 기반한E32Image[19] 포맷을 사용합니다.
  • 를 들어 Sony EricsonW800i, W610, W300 등입니다.
  • Siemens, SGOLD 및 SGOLD2 플랫폼: Siemens C65에서 S75 및 BenQ-Siemens E71/EL71.
  • 를 들어, Motorola는 E398, SLVR L7, v360, v3i(및 패치가 적용된 모든 전화 LTE2)입니다.
  • 바다, 예를 들어 Samsung Wave S8500.
  • 를 들어 Nokia N900과 같은 Maemo 또는 Meego OS를 실행하는 Nokia 전화기 또는 태블릿.
  • Android는 Java Native Interface에 ELF .so(공유[20] 개체) 라이브러리를 사용합니다.Android 5.0 "Lollipop" 이후 기본인 Android Runtime(ART)을 사용하면 설치 시 모든 응용 프로그램이 네이티브 ELF 바이너리로 컴파일됩니다.

일부 전화기는 메인 펌웨어에 어셈블리코드를 추가하는 패치를 사용하여 ELF 파일을 실행할 수 있습니다.이 기능은 언더그라운드모딩 문화에서는 ELFPack이라고 불립니다.ELF 파일 형식은 Atmel AVR(8비트), AVR32[21]Texas Instruments MSP430 마이크로컨트롤러 아키텍처에서도 사용됩니다.Open Firmware의 일부 구현에서는 ELF 파일도 로드할 수 있습니다.특히 애플은 이 회사가 생산한 거의 모든 PowerPC 머신에 사용되고 있습니다.

사양

Linux Standard Base(LSB; 리눅스 표준 기반)는 [22]지정된 아키텍처에 대해 위의 사양 중 일부를 보완합니다.예를 들어 System V ABI, AMD64 [23][24]Supplement가 해당됩니다.

86 열림

86open은 공통 PC 호환 x86 아키텍처에서 Unix 및 Unix와 유사한 운영체제를 위한 공통 바이너리 파일 형식에 대한 합의를 도출하여 소프트웨어 개발자들이 아키텍처에 [25]포팅하도록 장려하는 프로젝트입니다.당초의 아이디어는, 싱글 UNIX 사양의 전신인 사양 1170과 GNU C 라이브러리(glibc)의 작은 서브셋으로 표준화해, 수정되지 않은 바이너리를 x86 Unix 계열의 operating system에서 실행할 수 있도록 하는 것이었습니다.이 프로젝트는 원래 "스펙 150"으로 지정되었습니다.

최종적으로 선택된 형식은 ELF, 특히 Linux의 ELF 구현으로, 모든 관련 벤더와 운영체제에 의해 지원되는 사실상의 표준으로 판명되었습니다.

이 그룹은 1997년 이메일 논의를 시작했으며 1997년 8월 22일 산타크루즈 운영 사무실에서 처음 만났다.

운영 위원회는 마크 유잉, 디온 존슨, 에반 라이보비치, 브루스 페렌스, 앤드류 로치, 브라이언 웨인 스파크스, 라이너스 토발즈였다.이 프로젝트에 참여한 다른 사람들은 Keith Bostic, Chuck Cranor, Michael Davidson, Chris G였습니다.Demetriou, Ulrich Drepper, Don Dugger, Steve Ginzburg, Jon 'maddog' Hall, Ron Holt, Jordan Hubbard, Dave Jensen, Kean Johnston, Andrew Josey, Robert Lipe, Bela Lubkin, Tim Marsland, Greg Page, Roe, Ron, Ron Ronald.대표 운영체제 및 기업은 BeOS, BSDI, FreeBSD, 인텔, Linux, NetBSD, SCOSunSoft였습니다.

프로젝트가 진행되어 1998년 중반 SCO는 OpenServer, UnixWare Solaris에서 Linux 바이너리를 실행할 수 있는 오픈 소스 호환성 레이어인 lxrun을 개발하기 시작했습니다.SCO는 1999년 3월에 Linux World에서 lxrun을 공식적으로 지원한다고 발표했습니다.Sun Microsystems는 1999년 [26]초에 Solaris용 lxrun을 공식적으로 지원하기 시작했으며 이후 Solaris Containers for Linux Applications를 통해 Linux 바이너리 포맷을 통합 지원하게 되었습니다.

BSD는 (호환 레이어를 통해) Linux 바이너리를 오랫동안 지원했으며 주요 x86 Unix 벤더가 포맷을 추가로 지원함에 따라 이 프로젝트는 1999년 [27]7월 25일 Linux ELF를 업계에서 선택한 포맷으로 결정하고 "해산 선언"을 했습니다.

FatELF: Linux용 유니버설 바이너리

FatELF는 Fat 이진 [28]기능을 추가하는 ELF 이진 형식 확장입니다.Linux 및 기타 Unix 계열 운영체제용입니다.CPU 아키텍처 추상화(바이트 순서, 워드 크기, CPU 명령 세트 등) 외에도 여러 커널 ABI 버전을 지원하는 바이너리 소프트웨어 플랫폼 추상화의 잠재적인 이점이 있습니다.2021년 현재 FatELF는 메인라인 Linux [29][30][31]커널에 통합되어 있지 않습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b TIS(Tool Interface Standard) 실행 파일링크 포맷(ELF) 사양 버전 1.2(1995년 5월)
  2. ^ 도구 인터페이스 표준(TIS) 휴대용 형식 사양 버전 1.1(1993년 10월)
  3. ^ System V Application Binary Interface Edition 4.1(1997-03-18)
  4. ^ "Available lexers — Pygments". pygments.org.
  5. ^ "ELF Header". Sco.com. July 2000. Retrieved 2014-02-07.
  6. ^ "LXR linux/include/linux/elf.h". linux.no. Retrieved 27 April 2015.
  7. ^ "glibc 2.12 announce".
  8. ^ "sourceware.org Git - glibc.git/blob - libc-abis".
  9. ^ "sourceware.org Git - glibc.git/blob - sysdeps/gnu/ldsodefs.h".
  10. ^ "Program Header". Sco.com. July 2000. Retrieved 2017-04-05.
  11. ^ "elfutils". sourceware.org. Retrieved 30 April 2017.
  12. ^ "Binary Formats".
  13. ^ "MinixReleases – Minix Wiki". Wiki.minix3.org. Archived from the original on 2013-03-30. Retrieved 2014-01-19.
  14. ^ "Archived copy" (PDF). Archived from the original (PDF) on 2020-09-15. Retrieved 2016-10-19.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  15. ^ "GCCSDK – RISC OS". Riscos.info. 2012-04-22. Retrieved 2014-01-19.
  16. ^ "Guardian Programmer's Guide" (PDF). Hewlett Packard Enterprise. Archived from the original (PDF) on 2018-05-30. Retrieved 2018-05-30. 2018-5-30 웨이백 머신에서 원래 아카이브된 2018-05-30에서 보관된 페이지 44
  17. ^ Foley, Mary Jo. "Under the hood of Microsoft's Windows Subsystem for Linux ZDNet". ZDNet. Retrieved 2016-08-19.
  18. ^ PlayStation Portable은 암호화 및 재배치된 ELF 사용: PSP
  19. ^ Symbian OS 실행 파일 형식
  20. ^ Rosen, Kenneth; Host, Douglas; Klee, Rachel; Rosinski, Richard (2007). UNIX: The Complete Reference (2 ed.). McGraw Hill Professional. p. 707. ISBN 9780071706988. Retrieved 2017-06-08. Dynamically linked libraries are also called shared objects (.so).
  21. ^ "Chapter 4: Object Files", System V Application Binary Interface, 2009-10-26, e_machine
  22. ^ "LSB Referenced Specifications". linuxfoundation.org. Retrieved 27 April 2015.
  23. ^ "Executable and Linking Format (ELF)". linuxfoundation.org. Retrieved 27 April 2015.
  24. ^ "Introduction". linuxfoundation.org. Retrieved 27 April 2015.
  25. ^ Leibovitch, Evan (1997-12-23). "86Open Frequently-Asked Questions". Archived from the original on 2007-03-11. Retrieved 2007-06-06.
  26. ^ Record, Ronald (1998-05-21). "Bulletin on status of 86open at SCO". Archived from the original on 2008-12-08. Retrieved 2008-05-06.
  27. ^ Leibovitch, Evan (1999-07-25). "The86open Project – Final Update". Archived from the original on 2007-02-27. Retrieved 2007-05-06.
  28. ^ Gordon, Ryan. "fatelf-specification v1". icculus.org. Retrieved 2010-07-25.
  29. ^ Gordon, Ryan. "FatELF: Turns out I liked the uncertainty better". icculus.org. Retrieved 2010-07-13.
  30. ^ Holwerda, Thom (2009-11-03). "Ryan Gordon Halts FatELF Project". osnews.com. Retrieved 2010-07-05.
  31. ^ Brockmeier, Joe (June 23, 2010). "SELF: Anatomy of an (alleged) failure". Linux Weekly News. Retrieved 2011-02-06.

추가 정보

외부 링크