Linux kernel 在vs代码中包含intellisense的Linux内核头
我想使用VS代码来开发linux内核模块。我将路径添加到浏览路径,但不幸的是,它不起作用。 这是我的c_cpp_properties.json: 我想像Linux kernel 在vs代码中包含intellisense的Linux内核头,linux-kernel,visual-studio-code,intellisense,Linux Kernel,Visual Studio Code,Intellisense,我想使用VS代码来开发linux内核模块。我将路径添加到浏览路径,但不幸的是,它不起作用。 这是我的c_cpp_properties.json: 我想像#include一样包含,但intellisense解析器无法找到该文件。我将解析器引擎更改为“标记解析器”,因为新的默认解析器无法递归包含文件,因为它们位于内核源代码中。 有没有想过如何配置我的智能感知 我对ubuntu 16.04使用vs code 1.19,请确保安装了内核开发包 在头文件#inlcude下看到绿色曲线的地方,单击它。 它应
#include
一样包含,但intellisense解析器无法找到该文件。我将解析器引擎更改为“标记解析器”,因为新的默认解析器无法递归包含文件,因为它们位于内核源代码中。
有没有想过如何配置我的智能感知
我对ubuntu 16.04使用vs code 1.19,请确保安装了内核开发包 在头文件
#inlcude
下看到绿色曲线的地方,单击它。
它应该在项目的.vscode
目录中生成一个c\u cpp\u properties.json
文件
找到“Linux”、“IncludePath”部分并添加所需的include路径
我的结果是这样的:
"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/"
如果有人正在使用Visual Studio代码在其他计算机上开发linux内核模块,例如,我在MacOS上编写所有内容,并使用Fedora在VirtualBox上进行测试,那么我建议使用以下配置: 然后将内核文件复制到您的计算机上,或为我复制到共享文件夹中。但您只能复制头文件,因此可以复制整个文件夹 哪些文件夹:
- 我们需要
,所以我们从LINUX\u路径/include
{KERNEL\u路径}/include
- 我们需要
,所以我们从LINUX\u-PATH/arch/x86/include
{KERNEL\u-PATH}/arch/x86/include
LINUX\u路径更改为PATH
您还需要复制文件夹:mm
、fs
和kernel
,并相应地更新您的browse.path
。Franz,您没有对答案给出任何反馈,这有点令人失望。有一个新的问题似乎与您的问题重复,但我不知道您的问题是否已得到回答,因此我无法继续将其标记为重复。抱歉,但从那时起我就没有开发过内核模块。我必须单独测试。如何插入uname-r
以获得正确的版本而不必手动更改所有内容?我没有进行研究,但我使用$HOME/.bashrc导出了相应的环境变量:export CURRENT\u KERNEL\u INCLUDE\u PATH=“/usr/src/kernels/$(uname-r)/INCLUDE”然后在.vscode/c_cpp_properties.json中,我编写了${env:CURRENT_KERNEL_INCLUDE_PATH}/**但是仍然存在几个INCLUDE PATH问题,这取决于内核模块构建环境:解析内核makefile是绝对必要的。目前我不知道有任何VSCode扩展具有这样的功能。
"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/"