Answers:
Linux /usr/include/linux
下的标题和下方的标题/usr/include/asm*
与Linux内核一起分发。其他标头(/usr/include/sys/*.h
,/usr/include/bits/*.h
和以及更多)与C库一起分发(在所有非嵌入式Linux系统上为GNU C库,也称为glibc)。glibc手册中有一些解释。
请注意,/usr/include/linux
并且/usr/include/asm
应该包含编译C库时使用的标头,而不是正在运行的内核中的标头。否则,如果某些常量或数据结构发生了变化,则编译后的程序与C库之间将存在不一致的情况,这有可能导致崩溃甚至更糟。(如果标头与C库匹配,但C库与内核不匹配,则实际发生的情况是内核旨在保持稳定的ABI,并且必须检测到它是在其他ABI下调用的,并相应地解释syscall参数。内核必须对静态编译的程序执行此操作。)
我记得Debian和Red Hat在十年(十年前)之间就此问题进行了激烈的辩论/usr/include/linux
。显然,每一方都坚持自己的立场。(据我所知,Debian是正确的,如上所述)。Debian当前/usr/include/linux
在linux-libc-dev
软件包中分发和朋友,该软件包是从内核源代码编译的,但未随内核升级。内核头文件位于提供linux-headers-2.6
metapackage 的特定于版本的软件包中;这就是为特定内核版本编译模块所需要的。
您要查找的包是C库头文件。我不知道它叫什么,但是您可以通过找到它yum provides /usr/include/sys/types.h
。
glibc-headers
。