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)
gcc --version
e iii) o comando exato que você usou para compilá-lo.readelf -h /bin/ls
no debian gnu / linux. Também mostrouOS/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.Respostas:
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.
fonte