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
'임베디드 개발 > 리눅스 디바이스 드라이버' 카테고리의 다른 글
LDD ] PCIe 디바이스 드라이버 작성하기 - (2) (0) | 2025.01.15 |
---|---|
LDD ] PCIe 디바이스 드라이버 작성하기 - (1) (0) | 2024.12.25 |
LDD ] printk를 활용한 디버깅 (0) | 2024.10.06 |
LDD ] 리눅스 커널 모듈 In-tree building (0) | 2024.10.04 |
LDD ] Hello World 커널 모듈 + Makefile 작성법 (0) | 2024.10.02 |