임베디드 개발/리눅스 디바이스 드라이버
VSCode에서 리눅스 커널 모듈 개발시 Intellisense Error 없애기
eteo
2024. 12. 29. 22:18
Workspace에서 .vscode/c_cpp_properties.json 추가 (Ctrl + Shift + P > Edit Configuration)
그리고 커널 모듈 코드 작성시 필요한 매크로와 헤더 경로를 추가해주면 된다.
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include",
"/usr/local/include",
"/usr/src/linux-headers-5.4.0-150-generic/include",
"/usr/src/linux-headers-5.4.0-150-generic/include/uapi",
"/usr/src/linux-headers-5.4.0-150-generic/include/generated/uapi",
"/usr/src/linux-headers-5.4.0-150-generic/ubuntu/include",
"/usr/src/linux-headers-5.4.0-150-generic/arch/x86/include",
"/usr/src/linux-headers-5.4.0-150-generic/arch/x86/include/uapi",
"/usr/src/linux-headers-5.4.0-150-generic/arch/x86/include/generated",
"/usr/src/linux-headers-5.4.0-150-generic/arch/x86/include/generated/uapi",
"/usr/lib/gcc/x86_64-linux-gnu/7/include"
],
"defines": [
"__KERNEL__",
"MODULE"
],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "gnu++14",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
어떤 것을 추가할 지 모르겠다면 커널 빌드 시스템(커널 소스 트리의 최상위 Makefile)이 실제로 사용하는 컴파일 명령어에서 -I(include path)와 -D(define) 옵션을 확인하고 이를 c_cpp_properties.json에 추가하면 된다.
make 명령에 V=1 옵션을 사용하면 자세한 컴파일 명령어를 출력할 수 있다.
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules V=1
-I, -D 옵션만 추출하기
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules V=1 | grep -oE "(-I|-D)[^ ]+"
참고 : https://github.com/microsoft/vscode-cpptools/issues/5588#issuecomment-662116156