Я склав невелику програму 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)
Я відповідно відредагував питання.
—
alex_reader
Я щойно робив
—
ctrl-alt-delor
readelf -h /bin/ls
на debian gnu / linux. Це також показало OS/ABI: UNIX - System V
. Я здогадуюсь, що ABI використовується на більш ніж одному ядрі, а не тільки на Linux. Я також знаю, що Linux підтримує більше одного ABI.
Вікіпедія говорить, що [поле OSABI в заголовку ELF] часто встановлюється на 0 [SysV] незалежно від цільової платформи
—
Stéphane Chazelas
У цьому полі вказується, якщо файл ELF використовує будь-які розширення для ОС, за замовчуванням - 0. Більш детальний опис тут (на EI_OSABI).
—
Леяз
gcc --version
та iii) точну команду, яку ви використовували для її складання.