¿Por qué readelf muestra "System V" como mi sistema operativo en lugar de Linux?


10

Compilé un pequeño programa en C (2 líneas de códigos) con gcc para tratar de entender el formato de archivo ELF. Haciendo un readelf -hen el archivo de objeto, tengo en el encabezado:

OS/ABI:                            UNIX - System V 

Estoy usando Fedora, entonces ¿por qué no es Linux en su lugar?

Editar : compilé

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

con gcc -o main.o -c main.c. Mi versión de gcc es

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

Muéstrenos i) el código que compiló ii) la salida de gcc --versiony iii) el comando exacto que utilizó para compilarlo.
terdon

He editado la pregunta en consecuencia.
alex_reader

Acabo de hacerlo readelf -h /bin/lsen Debian GNU / Linux. También se mostró OS/ABI: UNIX - System V. Supongo que el ABI se usa en más de un kernel, no solo en Linux. También sé que Linux admite más de un ABI.
ctrl-alt-delor

66
Wikipedia dice que [el campo OSABI en el encabezado ELF] a menudo se establece en 0 [SysV] independientemente de la plataforma de destino
Stéphane Chazelas

1
Este campo indica si el archivo ELF está usando extensiones específicas del sistema operativo, el valor predeterminado es 0. Descripción más detallada aquí (en EI_OSABI).
Leiaz

Respuestas:


8

Existen pocas diferencias entre los ejecutables ELF en diferentes plataformas. "UNIX - Sistema V" es el terreno común; El sistema V es de donde proviene el formato ELF . El valor numérico correspondiente es 0. Este valor indica que el ejecutable no usa ninguna extensión específica del sistema operativo. Debian GNU / Linux, al menos, configura GCC / binutils para generar ejecutables con este campo establecido en 0 de forma predeterminada.


3
Y el estándar ELF dice que 0 significa "ELFOSABI_NONE 0 Sin extensiones o sin especificar" sco.com/developers/gabi/2003-12-17/ch4.eheader.html
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.