readelf가 Linux 대신 OS로 "System V"를 표시하는 이유는 무엇입니까?


10

ELF 파일 형식을 이해하려고 gcc로 작은 C 프로그램 (2 줄의 코드)을 컴파일했습니다. readelf -h객체 파일을 수행하면 헤더에 있습니다.

OS/ABI:                            UNIX - System V 

Fedora를 사용하고 있는데 왜 Linux가 아닌가요?

편집 : 내가 컴파일

int main(){
  int x = 0;
  x++;
}

gcc -o main.o -c main.c. 내 gcc 버전은

gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4) 

i) 컴파일 한 코드 ii) 출력 gcc --version및 iii) 컴파일에 사용한 정확한 명령을 보여주십시오.
terdon

그에 따라 질문을 편집했습니다.
alex_reader 14:07에

방금 readelf -h /bin/ls데비안 GNU / 리눅스에서 했어요 . 또한 보여 주었다 OS/ABI: UNIX - System V. 제 생각에는 ABI가 리눅스뿐만 아니라 둘 이상의 커널에서 사용된다는 것입니다. 또한 리눅스가 하나 이상의 ABI를 지원한다는 것을 알고 있습니다.
ctrl-alt-delor

6
위키 백과는 말한다 그것은 [ELF 헤더의 OSABI 필드가 종종로 설정 0 [시스템 V]에 관계없이 대상 플랫폼의
스테판 Chazelas가

1
이 필드는 ELF 파일이 OS 특정 확장자를 사용 중인지 여부를 알려줍니다. 기본값은 0입니다. 자세한 설명은 여기 (EI_OSABI)입니다.
Leiaz

답변:


8

다른 플랫폼에서 ELF 실행 파일 간에는 약간의 차이가 있습니다. “UNIX-System V”가 공통점입니다. 시스템 VELF 형식이 시작된 곳 입니다. 해당 숫자 값은 0입니다.이 값은 실행 파일이 OS 별 확장자를 사용하지 않음을 나타냅니다. 최소한 데비안 GNU / 리눅스는이 필드를 기본적으로 0으로 설정하여 실행 파일을 생성하도록 GCC / binutils를 구성합니다.


3
ELF 표준에 따르면 0은 "ELFOSABI_NONE 0 확장명을 지정하거나 지정하지 않음"을 의미합니다. sco.com/developers/gabi/2003-12-17/ch4.eheader.html
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.