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

时间:2017-12-18 10:08:30

标签: linux-kernel visual-studio-code intellisense

我想使用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

2 个答案:

答案 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更改为本地计算机上的路径。

您还需要复制文件夹:mmfskernel,并相应地更新browse.path