아래 /usr/include/linux
및 아래 의 헤더 /usr/include/asm*
는 Linux 커널과 함께 배포됩니다. 다른 헤더 ( /usr/include/sys/*.h
, /usr/include/bits/*.h
및 기타)는 C 라이브러리 ( 포함되지 않은 모든 Linux 시스템에서 glibc라고도 하는 GNU C 라이브러리 )와 함께 배포됩니다 . glibc 매뉴얼에 약간의 설명이 있습니다 .
주의 /usr/include/linux
와 /usr/include/asm
C 라이브러리, 실행중인 커널에서하지 헤더를 컴파일 할 때 사용 된 헤더를 포함해야합니다. 그렇지 않으면 일부 상수 또는 데이터 구조가 변경되면 컴파일 된 프로그램과 C 라이브러리간에 불일치가 발생하여 충돌이 발생하거나 더 악화 될 수 있습니다. (헤더가 C 라이브러리와 일치하지만 C 라이브러리가 커널과 일치하지 않는 경우 실제로 발생하는 것은 커널이 안정적인 ABI를 유지하도록 설계되었으며 다른 ABI에서 호출 된 것을 감지하고 이에 따라 syscall 인수를 해석해야한다는 것입니다. 커널은 정적으로 컴파일 된 프로그램에 대해이 작업을 수행해야합니다.)
나는이 /usr/include/linux
문제 에 대해 한동안 (10 년 전) 데비안과 레드햇 간의 격렬한 토론을 기억합니다 . 분명히 각면이 그 위치에 붙어 있습니다. (내가 이해하는 한, 데비안은 위에서 설명한 것처럼 옳다.) 데비안은 현재 패키지로 배포 /usr/include/linux
하고 친구를 linux-libc-dev
가지고 있는데, 커널 소스에서 컴파일되었지만 커널로 업그레이드되지는 않았다. 커널 헤더는 linux-headers-2.6
메타 패키지를 제공하는 버전 별 패키지에 있습니다. 이것은 특정 커널 버전에 대한 모듈을 컴파일하는 데 필요한 것입니다.
찾고있는 패키지는 C 라이브러리 헤더입니다. 나는 그것이 무엇인지 모르지만, 당신은로 알 수 있습니다 yum provides /usr/include/sys/types.h
.
glibc-headers
입니다.