我了解到内核头文件指定程序如何与内核交互,因此它们必须参与构建标准库,或者?我刚刚阅读了一个教程,它很好地解释了如何构建一个 arm-elf 工具链(http://wiki.ubuntuusers.de/GNU_ARM-Toolchain)。
让我感到困惑的是,这个过程不涉及内核头文件。他们用
../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 工具链之间的“连接”如何?