Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel 在vs代码中包含intellisense的Linux内核头_Linux Kernel_Visual Studio Code_Intellisense - Fatal编程技术网

Linux kernel 在vs代码中包含intellisense的Linux内核头

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下看到绿色曲线的地方,单击它。 它应

我想使用VS代码来开发linux内核模块。我将路径添加到浏览路径,但不幸的是,它不起作用。 这是我的c_cpp_properties.json:

我想像
#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
然后使用VS代码将本地计算机上的所有
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/"