/usr/include/linux 和 linux 内核源代码中的 include 文件夹有什么区别?



在刚安装的Ubuntu上,我在/usr/include/linux/usr/src/kernel-version-headers/include/linux 中都找到了内核标头

它们彼此相同吗?

它们非常不同;CCD_ 3报头是在编译系统的标准C库时使用的报头。它们由C库包装所有,并与标准C库同步更新。它们的存在是为了向内核提供userland接口,正如C库所理解和"代理"的1

/usr/src/linux-headers-$(uname -r)/include/linux报头通过/lib/modules/$(uname -r)/build符号链路来使用。它们由内核头包所有,并与内核同步更新。这些是内核标头的子集,也是构建树外内核模块所需的足够的Kbuild系统。这些文件代表内核内部——如果模块要正确理解内存中的对象,就必须根据这些文件构建。有关一些详细信息,请参阅内核的Documentation/kbuild/modules.txt文件。


1:"Mediated"是我的第一个词,但它意味着某种访问控制,事实并非如此。"中间人"意味着第三方程序,但事实并非如此。考虑一下:当C程序调用_exit()时,它实际上是在调用标准C库的_exit()包装器,后者调用exit(2)系统调用。select(2)接口对可跟踪的文件描述符的数量有上限,该限制被编译到标准的C库中。即使扩展了内核的接口,C库也需要重新编译。

最新更新