Nagłówki pod /usr/include/linux
i pod /usr/include/asm*
są dystrybuowane wraz z jądrem Linuksa. Pozostałe nagłówki ( /usr/include/sys/*.h
, /usr/include/bits/*.h
i wiele innych) są dystrybuowane wraz z biblioteką C (biblioteka GNU C , znana również jako glibc, we wszystkich niewbudowanych systemach Linux). W podręczniku glibc znajduje się małe wyjaśnienie .
Zauważ, że /usr/include/linux
i /usr/include/asm
powinny zawierać nagłówki użyte podczas kompilacji biblioteki C, a nie nagłówki z działającego jądra. W przeciwnym razie w przypadku zmiany niektórych stałych lub struktur danych wystąpi niespójność między skompilowanym programem a biblioteką C, co może spowodować awarię lub pogorszenie. (Jeśli nagłówki pasują do biblioteki C, ale biblioteka C nie pasuje do jądra, to tak naprawdę dzieje się tak, że jądro jest zaprojektowane tak, aby utrzymywać stabilny ABI i musi wykryć, że jest wywoływane pod innym ABI i odpowiednio interpretować argumenty syscall. jądro i tak musi to zrobić dla programów skompilowanych statycznie).
Pamiętam gorącą debatę między Debianem a Red Hatem, która odbyła się jakiś czas temu (dekada?) /usr/include/linux
Temu; najwyraźniej każda strona trzyma się swojej pozycji. (O ile rozumiem, Debian ma rację, jak wyjaśniono powyżej.) Debian obecnie rozpowszechnia /usr/include/linux
i przyjaciół w linux-libc-dev
pakiecie, który jest kompilowany ze źródeł jądra, ale nie jest aktualizowany z jądrem. Nagłówki jądra są w pakietach specyficznych dla wersji zapewniających linux-headers-2.6
metapakiet; tego właśnie potrzebujesz, aby skompilować moduł dla konkretnej wersji jądra.
Pakiet, którego szukasz, to nagłówki bibliotek C. Nie wiem, jak się nazywa, ale możesz się dowiedzieć yum provides /usr/include/sys/types.h
.
glibc-headers
.