要搭建嵌入式#%#$#%@%@%$#%$#%#%#$%@_e206a54e97690c++e50cc872dd70ee896开发的vscode c环境,首先安装vscode及c/c++扩展以获得基本编译调试能力;2. 安装适用于目标架构的交叉编译工具链,如树莓派使用arm-linux-gnueabihf-gcc;3. 配置tasks.json文件指定交叉编译器路径和编译参数,实现代码构建;4. 配置launch.json文件设置gdb远程调试,包括midebuggerpath和目标设备ip端口;5. 在嵌入式设备上启动gdbserver并监听指定端口,准备调试连接;6. 解决权限问题可通过chmod修改设备文件权限、sudo运行gdbserver或配置udev规则;7. 实现代码自动补全和语法检查需正确配置c_cpp_properties.json中的includepath和compilerpath,或安装clangd扩展提升智能感知;8. 使用remote development扩展可实现远程开发,通过remote-ssh连接设备并在远程安装vscode server;9. 用makefile管理复杂项目,编写编译规则并在tasks.json中调用make命令;10. 查看串口输出可安装serial monitor扩展并配置正确串口号和波特率。完整配置后即可高效进行嵌入式linux开发。
直接在VSCode里搞嵌入式Linux开发,听起来就挺酷的,对吧? 其实也没那么神秘,关键是把环境搭好。 这篇文章就来说说怎么完整搭建C环境,让你在VSCode里也能飞起来。
搭建嵌入式Linux开发的VSCode C环境。
为什么选择VSCode进行嵌入式Linux开发?
其实选择VSCode,很大程度上是因为它的轻量级和强大的插件生态。 你可以根据自己的需求安装各种插件,比如C/C++ 插件、远程开发插件等等,让你的开发效率嗖嗖地往上涨。 而且,VSCode的界面也比较友好,用起来很舒服。 当然,也有人喜欢用其他的IDE,比如Eclipse,但我觉得VSCode更适合我这种喜欢折腾的人。
解决方案:
-
安装VSCode和C/C++ 扩展: 这个不用多说,官网下载安装,然后在扩展商店搜索C/C++,安装。 装完之后,VSCode基本上就有了编译和调试C/C++代码的能力。
-
安装交叉编译工具链: 这是关键。 因为嵌入式Linux运行在不同的架构上(比如ARM),所以我们需要一个交叉编译工具链,在PC上编译出能在嵌入式设备上运行的代码。 这个工具链怎么安装,取决于你的嵌入式平台。 比如,如果是树莓派,你可以用
apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
来安装。 注意,
arm-linux-gnueabihf
这个部分要根据你的平台来修改。
-
配置VSCode的
tasks.json
文件: 这个文件告诉VSCode怎么编译你的代码。 在VSCode里按
Ctrl+Shift+P
,输入
Tasks: Configure Task
,选择
Create tasks.json from template
,然后选择
Others
。 然后,编辑
tasks.json
文件,把里面的
command
改成你的交叉编译器的路径,比如:
{ "version": "2.0.0", "tasks": [ { "type": "shell", "label": "build", "command": "/usr/bin/arm-linux-gnueabihf-gcc", // 这里改成你的交叉编译器路径 "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true } } ] }
- 配置VSCode的
launch.json
文件:
这个文件告诉VSCode怎么调试你的代码。 同样,按Ctrl+Shift+P
,输入
Debug: Open launch.json
。 然后,编辑
launch.json
文件。 调试嵌入式Linux程序,通常需要用到GDB远程调试。 所以,你需要配置GDB的路径,以及目标设备的IP地址和端口号。 一个例子如下:
{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/arm-linux-gnueabihf-gdb", // 这里改成你的GDB路径 "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "targetArchitecture": "arm", "miDebuggerServerAddress": "192.168.1.100:1234" // 这里改成你的目标设备的IP地址和端口号 } ] }
- 在嵌入式设备上启动GDB Server: 在你的嵌入式设备上,需要启动GDB Server,监听来自PC的调试请求。 你可以用
gdbserver 192.168.1.100:1234 your_program
来启动,其中
192.168.1.100
是你的PC的IP地址,
1234
是端口号,
your_program
是你要调试的程序。
如何解决VSCode调试嵌入式Linux程序时遇到的权限问题?
权限问题是嵌入式开发中经常遇到的。 比如,你可能没有权限访问某些设备文件,或者没有权限调试某些程序。 解决这个问题,通常需要修改文件权限,或者以root身份运行GDB Server。 但要注意,以root身份运行程序可能会带来安全风险,所以要谨慎操作。
解决方案:
-
修改文件权限: 使用
chmod
命令修改文件权限。 比如,
chmod 777 /dev/ttyUSB0
可以给
/dev/ttyUSB0
这个设备文件赋予所有用户读写执行的权限。
-
以root身份运行GDB Server: 使用
sudo gdbserver 192.168.1.100:1234 your_program
来以root身份运行GDB Server。
-
配置udev规则: udev是一个Linux设备管理器,可以根据设备属性自动配置设备文件。 你可以通过配置udev规则,让特定的用户自动拥有特定设备的访问权限。
如何在VSCode中实现代码自动补全和语法检查?
代码自动补全和语法检查是提高开发效率的利器。 VSCode的C/C++ 扩展自带了这些功能,但需要正确配置。 确保你的
c_cpp_properties.json
文件配置正确,包含了正确的头文件路径和编译器路径。
解决方案:
- 配置
c_cpp_properties.json
文件:
这个文件告诉VSCode你的项目的头文件路径和编译器路径。 按Ctrl+Shift+P
,输入
C/C++: Edit Configurations (JSON)
,可以打开这个文件。 然后,编辑这个文件,添加你的头文件路径和编译器路径。 一个例子如下:
{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/usr/include", "/usr/include/arm-linux-gnueabihf" // 这里添加你的头文件路径 ], "defines": [], "compilerPath": "/usr/bin/arm-linux-gnueabihf-gcc", // 这里改成你的交叉编译器路径 "cStandard": "c11", "cppStandard": "c++17", "intelliSenseMode": "linux-gcc-arm" } ], "version": 4 }
- 安装clangd扩展: clangd是一个C/C++语言服务器,可以提供更强大的代码自动补全和语法检查功能。 在VSCode的扩展商店搜索clangd,安装即可。
如何在VSCode中进行远程开发?
很多时候,我们的代码需要在远程的嵌入式设备上编译和运行。 VSCode的Remote Development 扩展可以让我们直接在远程设备上开发,就像在本地一样。
解决方案:
-
安装Remote Development 扩展: 在VSCode的扩展商店搜索Remote Development,安装即可。 这个扩展包含三个子扩展:Remote – SSH、Remote – Containers 和 Remote – WSL。 根据你的需求选择安装。
-
配置SSH连接: 使用Remote – SSH 扩展,可以通过SSH连接到远程设备。 点击VSCode左下角的绿色按钮,选择
Remote-SSH: Connect to Host...
,然后输入你的远程设备的IP地址和用户名。
-
在远程设备上安装VSCode Server: 第一次连接到远程设备时,VSCode会自动在远程设备上安装VSCode Server。 这个Server负责在远程设备上运行代码,并将结果返回给本地的VSCode。
如何使用Makefile管理项目?
Makefile是一个自动化构建工具,可以简化编译过程。 对于复杂的嵌入式Linux项目,使用Makefile可以大大提高开发效率。
解决方案:
- 编写Makefile: Makefile定义了项目的编译规则。 你需要编写Makefile,指定源文件、头文件、编译器选项等等。 一个简单的Makefile例子如下:
CC = arm-linux-gnueabihf-gcc CFLAGS = -g -Wall TARGET = my_program SOURCES = main.c all: $(TARGET) $(TARGET): $(SOURCES) $(CC) $(CFLAGS) -o $(TARGET) $(SOURCES) clean: rm -f $(TARGET)
- 配置VSCode的
tasks.json
文件:
修改tasks.json
文件,让VSCode使用Makefile来编译项目。
{ "version": "2.0.0", "tasks": [ { "type": "shell", "label": "make", "command": "make", "args": [], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true } } ] }
如何在VSCode中查看嵌入式设备的串口输出?
嵌入式设备的串口输出对于调试非常重要。 VSCode可以通过安装串口插件来查看串口输出。
解决方案:
-
安装Serial Monitor 扩展: 在VSCode的扩展商店搜索Serial Monitor,安装即可。
-
配置Serial Monitor: 配置Serial Monitor的串口号、波特率等参数。 点击VSCode底部的Serial Monitor图标,可以打开串口监视器。
配置嵌入式Linux开发环境确实需要一些耐心,但一旦配置好,开发效率就会大大提高。 希望这篇文章能帮助你顺利搭建VSCode的嵌入式Linux开发环境,开始你的嵌入式之旅!
评论(已关闭)
评论已关闭