
나는 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 배포용 패키지.