Я скомпилировал небольшую программу на C (2 строки кода) с помощью gcc, чтобы попытаться понять формат файла ELF. Делая readelf -h
на объектный файл, я в шапке:
OS/ABI: UNIX - System V
Я использую Fedora, так почему же это не Linux?
Редактировать : я скомпилировал
int main(){
int x = 0;
x++;
}
с gcc -o main.o -c main.c
. Моя версия gcc
gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)
gcc --version
и iii) точную команду, которую вы использовали для его компиляции.readelf -h /bin/ls
на Debian GNU / Linux. Это также показалоOS/ABI: UNIX - System V
. Я предполагаю, что ABI используется более чем в одном ядре, а не только в Linux. Я также знаю, что Linux поддерживает более одного ABI.Ответы:
Между исполняемыми файлами ELF на разных платформах мало различий. «UNIX - Система V» - это общий язык; Система V - это источник формата ELF . Соответствующее числовое значение равно 0. Это значение указывает на то, что исполняемый файл не использует расширение для конкретной ОС. Debian GNU / Linux, по крайней мере, настраивает GCC / binutils для генерации исполняемых файлов с этим полем по умолчанию равным 0.
источник