linux/kernel.h 파일은 어디에 있나요?

linux/kernel.h 파일은 어디에 있나요?

나는 Salzman의 "Linux 커널 모듈 프로그래밍 가이드"를 읽고 있는데 linux/kernel.h 파일의 위치를 ​​알고 싶습니다. 찾을 수 없습니다 find. 아니면 내가 찾은 파일 printk에 우선 순위 매크로가 없습니다.

답변1

linux/kernel.h모듈 구축에 사용되는 헤더는 다음과 같습니다.커널 소스 코드의 일부. 커널 소스 트리에서 모듈을 빌드할 때 사용되는 버전입니다.

외부 모듈 빌드의 경우 빌드 프로세스는 에서 시작됩니다 /lib/modules/$(uname -r)/build/include/linux/sched.h. 이 파일은 커널 헤더 패키지에서 제공됩니다.예를 들어데비안 파생 제품에서는 이 linux-headers-$(uname -r)패키지입니다.

커널 모듈이 아닌 사용자 프로세스에서 작동 /usr/include/linux/kernel.h합니다.

우선 순위 printk매크로는 현재linux/printk.h그리고linux/kern_levels.h. 읽고 계시는 것 같아요원래 가이드, 최신 커널의 경우 2.6 커널 시리즈를 기반으로 합니다.업데이트된 가이드(현재 사용중인5.6.7).

답변2

내 Mint 18.x 시스템에서 build-essential전체 소스 트리가 설치되지 않은 경우 -

user@localhost:~ $ locate kernel.h | grep \/kernel.h$
/usr/include/linux/kernel.h
/usr/src/linux-headers-4.4.0-21/include/linux/kernel.h
/usr/src/linux-headers-4.4.0-21/include/uapi/linux/kernel.h
/usr/src/linux-headers-4.4.0-21-generic/include/config/debug/kernel.h
/usr/src/linux-headers-4.4.0-21-generic/include/config/firmware/in/kernel.h
/usr/src/linux-headers-4.4.0-53/include/linux/kernel.h
/usr/src/linux-headers-4.4.0-53/include/uapi/linux/kernel.h
/usr/src/linux-headers-4.4.0-53-generic/include/config/debug/kernel.h
/usr/src/linux-headers-4.4.0-53-generic/include/config/firmware/in/kernel.h
/usr/src/linux-headers-4.8.0-53/include/linux/kernel.h
/usr/src/linux-headers-4.8.0-53/include/uapi/linux/kernel.h
/usr/src/linux-headers-4.8.0-53-generic/include/config/debug/kernel.h
/usr/src/linux-headers-4.8.0-53-generic/include/config/firmware/in/kernel.h

귀하의 질문에 대한 Jeff의 의견을 바탕으로 제 생각에는최대시간이 /usr/include/linux/kernel.h사용됩니다.

커널 트리 타르볼을 추출했다면 해당 디렉토리 구조에도 또 다른 복사본이 있을 수 있을 것입니다. 빠른 확인을 통해 크기가 모두 다르거나 빈 파일임을 알 수 있습니다.

답변3

이 질문에 대한 대답은 Linux 배포판에 따라 크게 달라질 수 있습니다. SUSE/SLES vs RHEL/Centos/Fedora vs debian vs mint 등

Linux 배포판과 데비안 RPM 버전에 따라 다른가요?

어쨌든 내 경험은 대부분 SLES 버전 11.4에서 이루어졌는데, 이는 내가 보증할 수 있는 것입니다.

/usr/src/linux/include/linux/kernel.h

where for me   /usr/src/linux -> /usr/src/linux-3.0.101-108.21

uname -r    for me returns 3.0.101-108.21-default

커널을 최신 버전으로 업데이트하면 소프트 링크가 kernel.h와 함께 그에 따라 변경됩니다. 찾고 계시다면 이렇게 말씀드리는 게 안전할 것 같아요커널 모듈해당 버전은 kernel.h다음과 관련된 일부 폴더에 위치하며 uname -r그 일부가 됩니다.커널 소스 코드Linux 배포용 패키지.

관련 정보