J'ai compilé un petit programme C (2 lignes de codes) avec gcc pour essayer de comprendre le format de fichier ELF. Faire un readelf -h
sur le fichier objet, j'ai dans l'en-tête:
OS/ABI: UNIX - System V
J'utilise Fedora, alors pourquoi n'est-ce pas Linux à la place?
Edit : j'ai compilé
int main(){
int x = 0;
x++;
}
avec gcc -o main.o -c main.c
. Ma version gcc est
gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)
gcc --version
et iii) la commande exacte que vous avez utilisée pour le compiler.readelf -h /bin/ls
sur Debian GNU / Linux. Cela a également montréOS/ABI: UNIX - System V
. Je suppose que l'ABI est utilisé sur plusieurs noyaux, pas seulement Linux. Je sais également que Linux prend en charge plus d'un ABI.Réponses:
Il existe peu de différences entre les exécutables ELF sur différentes plates-formes. «UNIX - System V» est le terrain d'entente; Le système V est à l'origine du format ELF . La valeur numérique correspondante est 0. Cette valeur indique que l'exécutable n'utilise aucune extension spécifique au système d'exploitation. Debian GNU / Linux, au moins, configure GCC / binutils pour générer des exécutables avec ce champ mis à 0 par défaut.
la source