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

时间:2012-02-01 10:26:45

标签: linux include linux-kernel

在新安装的Ubuntu上,我在/usr/include/linux/usr/src/kernel-version-headers/include/linux

中找到了内核头文件

它们是否相同?

1 个答案:

答案 0 :(得分:9)

他们非常不同; /usr/include/linux标头是编译系统标准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”是我的第一个单词选择,但它暗示了某种访问控制,但事实并非如此。 “Brokered”意味着第三方流程,但事实并非如此。考虑:当C程序调用{​​{1}}时,它实际上调用标准C库的_exit() 包装器,它调用_exit()系统调用。 exit(2)接口具有可以跟踪的文件描述符数量的上限,并且该限制被编译到标准C库中。即使扩展了内核的接口,也需要重新编译C库。