Die Header unter /usr/include/linuxund unter /usr/include/asm*werden mit dem Linux-Kernel verteilt. Die anderen Header ( /usr/include/sys/*.h, /usr/include/bits/*.hund viele weitere) werden mit der C-Bibliothek verteilt (die GNU C-Bibliothek , auch als glibc bezeichnet, auf allen nicht eingebetteten Linux-Systemen). Es gibt eine kleine Erklärung im glibc-Handbuch .
Beachten Sie, dass /usr/include/linuxund /usr/include/asmdie Header enthalten sollte, die beim Kompilieren der C-Bibliothek verwendet wurden, nicht die Header des laufenden Kernels. Andernfalls besteht bei Änderungen einiger Konstanten oder Datenstrukturen eine Inkonsistenz zwischen dem kompilierten Programm und der C-Bibliothek, die wahrscheinlich zu einem Absturz oder einer Verschlechterung führt. (Wenn die Header mit der C-Bibliothek übereinstimmen, die C-Bibliothek jedoch nicht mit dem Kernel übereinstimmt, geschieht der Kernel tatsächlich so, dass er einen stabilen ABI beibehält, und muss erkennen, dass er unter einem anderen ABI aufgerufen wird, und die Syscall-Argumente entsprechend interpretieren Der Kernel muss dies ohnehin für statisch kompilierte Programme tun.)
Ich erinnere mich an eine hitzige Debatte zwischen Debian und Red Hat vor einiger Zeit (vor einem Jahrzehnt?) Zu diesem /usr/include/linuxThema. anscheinend hält jede Seite an ihrer Position fest. (Soweit ich weiß, hat Debian Recht, wie oben erläutert.) Debian verteilt /usr/include/linuxund befreundet derzeit das linux-libc-devPaket, das aus Kernelquellen kompiliert, aber nicht mit dem Kernel aktualisiert wurde. Kernel-Header befinden sich in linux-headers-2.6versionenspezifischen Paketen, die das Metapaket bereitstellen. Dies ist, was Sie benötigen, um ein Modul für eine bestimmte Kernel-Version zu kompilieren.
Das Paket, das Sie suchen, sind die C-Bibliotheksheader. Ich weiß nicht, wie es heißt, aber Sie können es mit herausfinden yum provides /usr/include/sys/types.h.
glibc-headers.