Các tiêu đề dưới /usr/include/linux
và dưới /usr/include/asm*
được phân phối với nhân Linux. Các tiêu đề khác ( /usr/include/sys/*.h
, /usr/include/bits/*.h
và nhiều hơn nữa) được phân phối với thư viện C (thư viện GNU C , còn được gọi là glibc, trên tất cả các hệ thống Linux không nhúng). Có một lời giải thích nhỏ trong hướng dẫn sử dụng glibc .
Lưu ý rằng /usr/include/linux
và /usr/include/asm
nên chứa các tiêu đề đã được sử dụng khi biên dịch thư viện C, không phải các tiêu đề từ kernel đang chạy. Mặt khác, nếu một số hằng hoặc cấu trúc dữ liệu thay đổi, sẽ có sự không nhất quán giữa chương trình được biên dịch và thư viện C, có khả năng dẫn đến sự cố hoặc tệ hơn. . kernel phải làm điều này cho các chương trình được biên dịch tĩnh.)
Tôi nhớ một cuộc tranh luận sôi nổi giữa Debian và Red Hat một thời gian (một thập kỷ?) Trước đây về /usr/include/linux
vấn đề này; rõ ràng mỗi bên đang bám sát vị trí của nó. (Theo như tôi hiểu, Debian đã đúng, như đã giải thích ở trên.) Debian hiện phân phối /usr/include/linux
và bạn bè trong linux-libc-dev
gói, được biên dịch từ các nguồn kernel nhưng không được nâng cấp với kernel. Các tiêu đề hạt nhân nằm trong các gói dành riêng cho phiên bản cung cấp linux-headers-2.6
siêu dữ liệu; đây là những gì bạn cần để biên dịch một mô-đun cho một phiên bản kernel cụ thể.
Gói bạn đang tìm kiếm là các tiêu đề thư viện C. Tôi không biết nó được gọi là gì, nhưng bạn có thể tìm hiểu yum provides /usr/include/sys/types.h
.
glibc-headers
.