【问题标题】:What's the difference between /usr/include/linux and the include folder in linux kernel source?/usr/include/linux 和 linux 内核源代码中的 include 文件夹有什么区别?
【发布时间】:2012-02-01 18:44:39
【问题描述】:

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

它们是相同的吗?

【问题讨论】:

    标签: linux include linux-kernel


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      相关资源
      最近更新 更多