Я узнал, что заголовки ядра определяют, как программы могут взаимодействовать с ядром, поэтому они должны участвовать в создании стандартной библиотеки, или? Я только что прочитал руководство, в котором довольно хорошо объясняется, как создать цепочку инструментов 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?