在 vs 代码中包含智能感知的 Linux 内核头文件
Include Linux kernel headers for intellisense in vs code
我想使用 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>
那样包含,但智能感知解析器无法找到该文件。我将解析器引擎更改为 "Tag Parser" 因为新的默认解析器无法递归包含文件,因为它们在内核源代码中。
关于如何配置我的智能感知有什么想法吗?
我为 ubuntu 16.04
使用 vs code 1.19
确保安装了 kernel-devel
软件包。
在头文件下看到绿色波浪线的地方 #include
,单击它。
它应该在项目的 .vscode
目录中生成一个 c_cpp_properties.json
文件。
找到“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/"
如果有人在其他机器上使用 Visual Studio 代码开发 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
。
我想使用 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>
那样包含,但智能感知解析器无法找到该文件。我将解析器引擎更改为 "Tag Parser" 因为新的默认解析器无法递归包含文件,因为它们在内核源代码中。
关于如何配置我的智能感知有什么想法吗?
我为 ubuntu 16.04
使用 vs code 1.19确保安装了 kernel-devel
软件包。
在头文件下看到绿色波浪线的地方 #include
,单击它。
它应该在项目的 .vscode
目录中生成一个 c_cpp_properties.json
文件。
找到“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/"
如果有人在其他机器上使用 Visual Studio 代码开发 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
。