Я скомпилировал небольшую программу на 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] независимо от целевой платформы
—
Стефан Шазелас
В этом поле указывается, использует ли файл ELF какие-либо специфичные для ОС расширения, значение по умолчанию - 0. Более подробное описание здесь (в EI_OSABI).
—
Лейаз
gcc --version
и iii) точную команду, которую вы использовали для его компиляции.