Perché readelf mostra "System V" come il mio sistema operativo anziché Linux?


10

Ho compilato un piccolo programma C (2 righe di codici) con gcc per cercare di capire il formato del file ELF. Facendo readelf -hsul file oggetto, ho nell'intestazione:

OS/ABI:                            UNIX - System V 

Sto usando Fedora, quindi perché non è Linux?

Modifica : ho compilato

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

con gcc -o main.o -c main.c. La mia versione di gcc è

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

Per favore, mostraci i) il codice che hai compilato ii) l'output di gcc --versione iii) il comando esatto che hai usato per compilarlo.
terdon

Ho modificato la domanda di conseguenza.
alex_reader,

Ho appena fatto readelf -h /bin/lssu debian gnu / linux. Ha anche mostrato OS/ABI: UNIX - System V. La mia ipotesi è che l'ABI sia usato su più di un kernel, non solo su Linux. So anche che Linux supporta più di un ABI.
ctrl-alt-delor,

6
Wikipedia afferma che [il campo OSABI nell'intestazione ELF] è spesso impostato su 0 [SysV] indipendentemente dalla piattaforma di destinazione
Stéphane Chazelas,

1
Questo campo indica se il file ELF utilizza estensioni specifiche del sistema operativo, il valore predefinito è 0. Descrizione più dettagliata qui (su EI_OSABI).
Leiaz,

Risposte:


8

Esistono poche differenze tra gli eseguibili ELF su piattaforme diverse. "UNIX - System V" è il terreno comune; System V è da dove proviene il formato ELF . Il valore numerico corrispondente è 0. Questo valore indica che l'eseguibile non utilizza alcuna estensione specifica del sistema operativo. Debian GNU / Linux, almeno, configura GCC / binutils per generare eseguibili con questo campo impostato su 0 di default.


3
E lo standard ELF dice 0 significa "ELFOSABI_NONE 0 Nessuna estensione o non specificata" sco.com/developers/gabi/2003-12-17/ch4.eheader.html
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.