在 VS Code 中包含用于智能感知的 Linux 内核头文件

Fra*_*ayr 4 intellisense linux-kernel visual-studio-code

我想使用 VS code 来开发 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
}
Run Code Online (Sandbox Code Playgroud)

我想包含类似内容#include <linux/miscdevice.h>,但智能感知解析器无法找到该文件。我将解析器引擎更改为“标签解析器”,因为新的默认解析器无法递归包含文件,因为它们位于内核源代码中。有什么想法如何配置我的智能感知吗?

我在 ubuntu 16.04 上使用 vs code 1.19

Dan*_*iel 6

确保该kernel-devel软件包已安装。

如果您在头文件下看到绿色波浪线#include,请单击它。它应该在项目内的目录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/"
Run Code Online (Sandbox Code Playgroud)