赞
踩
在使用 vscode 编写 eBPF 程序时,如果不做一些头文件定位的操作,默认情况下头文件总是带有“红色下划线”,并且大部分的变量不会有提示与补全。
在编写代码文件较小时(或者功能需求小时)并不会带来不方便。
但在长时间编写以及多个程序文件都在使用时,无法补全和提示也影响着编程。
VSCode 编辑器、远程连接服务器开发模式、使用 clangd 插件
> 这里默认已经可以运行 eBPF 程序了。
sudo apt-get install clang
使用 clang --version 来验证是否安装成功。
可以随便写一个有效的 Makefile 文件。
- # Makefile
- CC=clang
- CFLAGS=-I/usr/src/linux-headers-$(shell uname -r)/include -I/usr/src/linux-headers-$(shell uname -r)/include/uapi
-
- all: main.o
-
- main.o: src/main.c
- $(CC) $(CFLAGS) -o main.o -c src/main.c
-
- clean:
- rm -f main.o
bear
工具用于生成 compile_commands.json
文件。可以通过以下命令进行安装:
安装 bear 工具:
sudo apt-get install bear
compile_commands.json
文件在项目的根目录下运行 bear
来生成编译数据库文件。假设你使用的是 make
来构建项目:
bear -- make
生成的 compile_commands 文件如下所示:
- [
- {
- "directory": "/home/user/ning_ebpf",
- "command": "clang -I/usr/src/linux-headers-$(uname -r)/include -I/usr/src/linux-headers-$(uname -r)/include/uapi -o main.o -c src/main.c",
- "file": "src/main.c"
- }
- ]
在项目根目录下创建或编辑 .clangd
文件,添加以下内容:
- CompileFlags:
- Add:
- - -isystem
- - /usr/src/linux-headers-$(shell uname -r)/include
- - -isystem
- - /usr/src/linux-headers-$(shell uname -r)/include/uapi
compile_commands.json
确保 compile_commands.json
文件位于项目根目录: compile_commands.json
文件应该位于项目的根目录。VS Code 和 Clangd 会自动查找该文件。
在 settings.json
中添加以下配置:
- {
- "clangd.path": "clangd",
- "clangd.arguments": [
- "--compile-commands-dir=${workspaceFolder}"
- ]
- }
最终配置好后的项目目录如下:
(需要注意的是,这里没有使用项目的编程框架。)
重启 VS Code: 重启 VS Code 以确保配置生效。
查看 Clangd 输出: 在 VS Code 的输出窗口中选择 clangd,查看是否有错误信息。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。