您现在的位置是:首页 >技术交流 >【Linux驱动】VScode 环境简单配置网站首页技术交流
【Linux驱动】VScode 环境简单配置
在开始编写驱动之前,我们需要保证良好的编码环境,这里编写代码所使用的编辑器是VScode,如果进行环境配置,可能会提示很多错误,比如头文件找不到、内核函数的定义无法跳转等等。
VScode 在这里只作为编辑器使用,配置的是编辑环境,而不是编译环境。
目录
一、内核源码准备
1、下载并解压内核源码
编写驱动时,我们需要用到内核中的一些头文件,如 linux/module.h、fs.h 等,因此,我们需要先下载内核源码,本人使用的是imx6ull mini 版,可以在正点原子官方论坛下载到内核源码。
正点原子下载中心链接:正点原子下载中心
下载以后,然后解压,按照下图提示就可以获取到内核源码了。
2、内核源码解压
内核源码我们需要有两份,一份是放在Windows环境下,用于解决我们编写代码时,VScode找不到头文件的问题。
一份是放在Linux环境下,用于提供一些内核库,以便于将写好的源文件编译成模块(.ko 文件)
Windows下解压
解压以后记住解压路径,等会在配置VScode的时候会用到。本人这里的解压路径是 D:/linux-kernel/linux-imx-kernel-4.1.15
Linux下解压
解压以后同样要记住解压路径,等会在编写Makefile文件的时候,需要指明内核源码所在目录。本人这里的解压路径是 /home/pigeon/workspace/linux-kernel
二、VScode 编辑环境配置
VScode当前工作目录相关的配置是保存在 .vscode 目录下的,如果没有 .vscode 目录,我们可以自己先手动创建一个。.vscode 目录下至少包含如下两个文件:
- c_cpp_properties.json
- settings.json
c_cpp_properties.json
我们在这个文件里指定头文件路径,一般这里配置的是编译环境,只不过我们不使用vscode来编译,只用于编写代码。因此,只需要配置头文件目录即可。
我们引入内核源码中如下目录(下面的目录都是相对于内核源码的根目录而言的),根目录就是Windows下解压内核源码的目录 D:/linux-kernel/linux-imx-kernel-4.1.15
include/ |
arch/arm/include/ |
{
"configurations": [
{
"name": "Linux",
"includePath": [
"D:/linux-kernel/linux-imx-kernel-4.1.15/include/",
"D:/linux-kernel/linux-imx-kernel-4.1.15/arch/arm/include/"
],
"defines": [],
"intelliSenseMode": "windows-msvc-x64",
"cStandard": "c11",
"cppStandard": "gnu++14"
}
],
"version": 4
}
settings.json
这个是配置文件显示、查询等相关内容的。
{
"search.exclude": {
"**/node_modules": true,
"**/bower_components": true,
"**/*.o":true,
"**/*.su":true,
"**/*.cmd":true,
"Documentation":true,
},
"files.exclude": {
"**/.git": true,
"**/.svn": true,
"**/.hg": true,
"**/CVS": true,
"**/.DS_Store": true,
"**/*.o":true,
"**/*.su":true,
"**/*.cmd":true,
"Documentation":true,
}
}
三、VScode安装插件
VSCode 支持多种语言,比如 C/C++、Python、C#等等,为了方便后续代码编写,需要安装一些插件,如 C/C++的扩展包、设备树语法、Makefile语法等。
- C/C++:必须要有的,支持C/C++语法
- C/C++ Snippets:C/C++重用代码块
- C/C++ Advanced Lint:C/C++静态检测
- Include AutoComplete:自动头文件包含
- Rainbow Brackets:彩虹花括号,有助于阅读代码
- Arm Assembly:支持 ARM 汇编语法高亮显示
- vscode-icons:VSCode 图标插件,主要是资源管理器下各个文件夹的图标
- DeviceTree:设备树语法插件
- TabNine:一款 AI 自动补全插件