일부 Rasperry Pi C/C++ 커널 모듈 개발에 BuildRoot 2015.08.1을 사용할 계획입니다.
작동하는 것:
- 커널과 rootfs를 빌드하고 Raspberry Pi를 부팅할 수 있습니다.
- BuildRoot 도구 체인을 범용 패키지 또는 자동화 도구 키트로 사용하여 "hello world"를 빌드/재구축할 수 있습니다.
잘못된 방법:
- linux/module.h와 같은 특정 커널 헤더 파일을 포함할 수 없습니다. 툴체인에서 이 헤더 파일을 찾을 수 없습니다.
출력/스테이징/usr/include를 살펴보았습니다. linux/net.h와 같은 일부 Linux 헤더 파일을 찾을 수 있습니다. 그러나 linux/module.h와 같은 다른 것들은 존재하지 않습니다.
내가 찾고 있는 헤더가 커널 소스 트리에 존재합니다. 하지만 무대 공간에는 설치되지 않은 것 같습니다. BuildRoot가 "make headers_install"을 호출하는지 100% 확신할 수는 없지만 합리적인 가정인 것 같습니다. "make headers_install"이 설치할 헤더를 선택하는 방법을 아는 사람이 있나요? 아니면 다른 것을 놓치고 있습니까?
답변1
linux/module.h와 같은 특정 커널 헤더 파일을 포함할 수 없습니다. 툴체인에서 이 헤더 파일을 찾을 수 없습니다.
커널 모듈: "make" 명령에는 이를 수행하는 "내부"가 있습니다. (만) 특수 »를 사용하는 경우커널 모듈 Makefile« → →
→https://stackoverflow.com/questions/33589276/linux-kernel-module-compilation/33589361#33589361
답변2
다음은 커널 모듈에 대한 완전히 자동화된 트리 외부 설정입니다:https://github.com/cirosantilli/linux-kernel-module-cheat/blob/b89ba9b799480e4eb1975f0a704409efb7d667d1/kernel_module/external.mk
여기에 최소한의 버전을 설명했습니다.https://stackoverflow.com/questions/40307328/how-to-add-a-linux-kernel-driver-module-as-a-buildroot-package/43874273#43874273
패키지 유형은 $(eval $(kernel-module))
기본적으로 모든 것을 설정합니다.