内核头文件如何构建gcc工具链?

问题描述 投票:1回答:2

我了解到内核头文件指定了程序如何与内核交互,因此它们必须参与构建标准库,或者?我刚刚阅读了一个教程,该教程解释了如何构建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工具链之间的“连接”如何?

linux-kernel embedded-linux glibc newlib
2个回答
0
投票

没有Linux内核头文件,就无法构建GNU C库。大多数C库函数都是使用系统调用实现的,内核头文件定义了系统调用接口。当然,标头附带内核源代码,但必须先为处理器体系结构修补和配置源代码,然后才能使用它们构建C库。


0
投票

您正在构建的示例是newlib,一个裸机libc实现。这意味着运行二进制文件不需要操作系统,不需要构建Linux头文件。

如果你构建glibc或musl工具链。你需要Linux头文件。

© www.soinside.com 2019 - 2024. All rights reserved.