我想使用VS代码开发Linux内核模块。我添加了浏览路径的路径,但不幸的是它无法正常工作。 这是我的 c_cpp_properties.json :
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${HOME}/Workspaces/kernel-sources/mainline/linux/include",
"${workspaceRoot}"
],
"defines": [],
"intelliSenseMode": "clang-x64",
"browse": {
"path": [
"${HOME}/Workspaces/kernel-sources/mainline/linux/include/",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 3
}
我想包括#include <linux/miscdevice.h>
,但intellisense解析器无法找到该文件。我将解析器引擎更改为&#34; Tag Parser&#34;因为新的默认解析器无法递归包含文件,因为它们位于内核源代码中。
有什么想法如何配置我的intellisense?
我使用vs code 1.19 for ubuntu 16.04
答案 0 :(得分:1)
确保已安装kernel-devel
包。
如果您在标题文件#inlcude
下看到绿色波浪线,请单击它。
它应该在项目的c_cpp_properties.json
目录中生成.vscode
文件。
找到“Linux”,“IncludePath”部分并添加所需的包含路径。
我最终看起来像这样:"name": "Linux",
"includePath": [
"${workspaceFolder}",
"/usr/include",
"/usr/local/include",
"/usr/src/kernels/3.10.0-693.el7.x86_64/include/",
"/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include/",
"/usr/src/kernels/3.10.0-693.el7.x86_64/arch/x86/include/"
答案 1 :(得分:1)
如果有人在使用Visual Studio Code的其他机器上开发linux内核模块,例如,我在MacOS上编写了所有内容,并在Fedora的VirtualBox上进行了测试,那么我建议采用以下配置:
https://gist.github.com/gyulkkajo/c29c19fc2c64f61d8b6b4892566bf10c
然后将内核文件复制到您的计算机或我的共享文件夹中。但是您只需要头文件,因此可以复制整个文件夹。
哪个文件夹:
LINUX_PATH/include
,所以我们从{KERNEL_PATH}/include
复制文件夹LINUX_PATH/arch/x86/include
,所以我们从{KERNEL_PATH}/arch/x86/include
复制文件夹然后使用VS Code将所有LINUX_PATH
更改为本地计算机上的路径。
您还需要复制文件夹:mm
,fs
和kernel
,并相应地更新browse.path
。