Compilei um pequeno programa C (2 linhas de códigos) com o gcc para tentar entender o formato do arquivo ELF. Fazendo um readelf -h
no 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)
Eu editei a pergunta de acordo.
—
Alex_reader
Acabei de fazer
—
Ctrl-alt-delor
readelf -h /bin/ls
no 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.
A Wikipedia diz que [o campo OSABI no cabeçalho ELF] geralmente é definido como 0 [SysV] independentemente da plataforma de destino
—
Stéphane Chazelas
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
gcc --version
e iii) o comando exato que você usou para compilá-lo.