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 -h
en 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)
gcc --version
y iii) el comando exacto que utilizó para compilarlo.readelf -h /bin/ls
en 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.Respuestas:
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.
fuente