Header di bawah /usr/include/linux
dan di bawah /usr/include/asm*
didistribusikan dengan kernel Linux. Header lainnya ( /usr/include/sys/*.h
,, /usr/include/bits/*.h
dan banyak lagi) didistribusikan dengan pustaka C (pustaka GNU C , juga dikenal sebagai glibc, pada semua sistem Linux yang tidak tertanam). Ada sedikit penjelasan dalam manual glibc .
Perhatikan bahwa /usr/include/linux
dan /usr/include/asm
harus berisi tajuk yang digunakan saat mengkompilasi pustaka C, bukan tajuk dari kernel yang berjalan. Jika tidak, jika beberapa konstanta atau struktur data berubah, akan ada ketidakkonsistenan antara program yang dikompilasi dan pustaka C, yang kemungkinan akan mengakibatkan crash atau lebih buruk. (Jika header cocok dengan pustaka C tetapi pustaka C tidak cocok dengan kernel, apa yang sebenarnya terjadi adalah bahwa kernel dirancang untuk menjaga ABI yang stabil dan harus mendeteksi bahwa itu disebut di bawah ABI yang berbeda dan menafsirkan argumen syscall sesuai. kernel harus melakukan ini untuk program yang dikompilasi secara statis.
Saya ingat perdebatan sengit antara Debian dan Red Hat beberapa saat (satu dekade?) Yang lalu tentang /usr/include/linux
masalah ini; rupanya masing-masing pihak menempel pada posisinya. (Sejauh yang saya mengerti, Debian benar, seperti yang dijelaskan di atas.) Debian saat ini mendistribusikan /usr/include/linux
dan teman-teman dalam linux-libc-dev
paket, yang dikompilasi dari sumber kernel tetapi tidak ditingkatkan dengan kernel. Header kernel ada dalam paket versi khusus yang menyediakan linux-headers-2.6
metapackage; inilah yang Anda perlukan untuk mengkompilasi modul untuk versi kernel tertentu.
Paket yang Anda cari adalah header C library. Saya tidak tahu apa namanya, tetapi Anda bisa mengetahuinya yum provides /usr/include/sys/types.h
.
glibc-headers
.