Как заголовки ядра участвуют в создании инструментальной цепочки gcc?

Я узнал, что заголовки ядра определяют, как программы могут взаимодействовать с ядром, поэтому они должны участвовать в создании стандартной библиотеки, или? Я только что прочитал руководство, в котором довольно хорошо объясняется, как создать цепочку инструментов arm-elf (http://wiki.ubuntuusers.de/GNU_ARM-Toolchain).

Что меня смущает, так это то, что в этом процессе не задействованы заголовки ядра. Они настраивают gcc с помощью

../gcc-4.3.2/configure --target=arm-elf --prefix=/opt/gnuarm --enable-interwork --enable-multilib --enable-languages="c,c++" --enable-target-optspace --with-float=soft --with-newlib --with-headers=../newlib-1.16.0/newlib/libc/include/ --disable-nls 

и Newlib с

../newlib-1.16.0/configure --target=arm-elf --prefix=/opt/gnuarm --enable-interwork --enable-multilib --enable-target-optspace --with-float=soft 

Мне кажется, что они берут заголовки только из newlib (они используют newlib вместо glibc). Файлы в этом каталоге выглядят довольно стандартно. Я ожидаю, что где-то в этом процессе появится «версия ядра» Linux, но это не так. Я думал, что Linux ABI может меняться от версии ядра к версии ядра. Как "связь" между ядром (заголовками) и набором инструментов gcc?


person user3226575    schedule 16.02.2014    source источник


Ответы (2)


Библиотека GNU C не может быть создана без заголовков ядра Linux. Большинство функций библиотеки C реализованы с помощью системных вызовов, а заголовки ядра определяют интерфейс системного вызова. Заголовки, конечно, поставляются с исходным кодом ядра, но исходный код должен быть исправлен и настроен для архитектуры процессора, прежде чем их можно будет использовать для сборки библиотеки C.

person AvadhanaSolutions    schedule 10.12.2015

Пример, который вы создаете, предназначен для newlib, реализации libc на голом железе. Это означает, что для запуска двоичных файлов не требуется ОС, для сборки не нужны заголовки Linux.

Если вы создаете glibc или musl toolchains. Вам понадобятся заголовки Linux.

person stafford    schedule 24.03.2019