Por que readelf mostra "System V" como meu SO em vez de Linux?


10

Compilei um pequeno programa C (2 linhas de códigos) com o gcc para tentar entender o formato do arquivo ELF. Fazendo um readelf -hno arquivo de objeto, tenho no cabeçalho:

OS/ABI:                            UNIX - System V 

Estou usando o Fedora, então por que não é o Linux?

Edit : eu compilei

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

com gcc -o main.o -c main.c. Minha versão do gcc é

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

Por favor, mostre-nos i) o código que você compilou ii) a saída gcc --versione iii) o comando exato que você usou para compilá-lo.
terdon

Eu editei a pergunta de acordo.
Alex_reader

Acabei de fazer readelf -h /bin/lsno debian gnu / linux. Também mostrou OS/ABI: UNIX - System V. Meu palpite é que o ABI é usado em mais de um kernel, não apenas no Linux. Eu também sei que o Linux suporta mais de um ABI.
Ctrl-alt-delor

6
A Wikipedia diz que [o campo OSABI no cabeçalho ELF] geralmente é definido como 0 [SysV] independentemente da plataforma de destino
Stéphane Chazelas

1
Este campo informa se o arquivo ELF está usando alguma extensão específica do SO, o padrão é 0. Mais descrição detalhada aqui (em EI_OSABI).
Leiaz

Respostas:


8

Existem poucas diferenças entre os executáveis ​​do ELF em diferentes plataformas. "UNIX - System V" é o terreno comum; O sistema V é de onde veio o formato ELF . O valor numérico correspondente é 0. Esse valor indica que o executável não usa nenhuma extensão específica do SO. O Debian GNU / Linux, pelo menos, configura o GCC / binutils para gerar executáveis ​​com este campo definido como 0 por padrão.


3
E o padrão ELF diz que 0 significa "ELFOSABI_NONE 0 sem extensões ou não especificado" sco.com/developers/gabi/2003-12-17/ch4.eheader.html
Ciro Santilli em
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.