当前位置:   article > 正文

【开发 | 环境配置】解决 VSCode 编写 eBPF 程序找不到头文件

【开发 | 环境配置】解决 VSCode 编写 eBPF 程序找不到头文件

问题描述:

在使用 vscode 编写 eBPF 程序时,如果不做一些头文件定位的操作,默认情况下头文件总是带有“红色下划线”,并且大部分的变量不会有提示与补全。

在编写代码文件较小时(或者功能需求小时)并不会带来不方便。

但在长时间编写以及多个程序文件都在使用时,无法补全和提示也影响着编程。

解决方案:

应用场景:

VSCode 编辑器、远程连接服务器开发模式、使用 clangd 插件

方案/方法:

> 这里默认已经可以运行 eBPF 程序了。

检查 clang 是否安装

sudo apt-get install clang

使用 clang --version 来验证是否安装成功。 

编写 Makefile 文件

可以随便写一个有效的 Makefile 文件。

  1. # Makefile
  2. CC=clang
  3. CFLAGS=-I/usr/src/linux-headers-$(shell uname -r)/include -I/usr/src/linux-headers-$(shell uname -r)/include/uapi
  4. all: main.o
  5. main.o: src/main.c
  6. $(CC) $(CFLAGS) -o main.o -c src/main.c
  7. clean:
  8. rm -f main.o

安装 bear

bear 工具用于生成 compile_commands.json 文件。可以通过以下命令进行安装:

安装 bear 工具:

sudo apt-get install bear

生成 compile_commands.json 文件

在项目的根目录下运行 bear 来生成编译数据库文件。假设你使用的是 make 来构建项目:

bear -- make

compile_commands.json 文件

生成的 compile_commands 文件如下所示:

  1. [
  2. {
  3. "directory": "/home/user/ning_ebpf",
  4. "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",
  5. "file": "src/main.c"
  6. }
  7. ]

配置 .clangd 文件

在项目根目录下创建或编辑 .clangd 文件,添加以下内容:

  1. CompileFlags:
  2. Add:
  3. - -isystem
  4. - /usr/src/linux-headers-$(shell uname -r)/include
  5. - -isystem
  6. - /usr/src/linux-headers-$(shell uname -r)/include/uapi

配置 VS Code 使用上述生成的 compile_commands.json

确保 compile_commands.json 文件位于项目根目录: compile_commands.json 文件应该位于项目的根目录。VS Code 和 Clangd 会自动查找该文件。

settings.json 中添加以下配置:

  1. {
  2. "clangd.path": "clangd",
  3. "clangd.arguments": [
  4. "--compile-commands-dir=${workspaceFolder}"
  5. ]
  6. }

最终配置好后的项目目录如下:

(需要注意的是,这里没有使用项目的编程框架。)

生效与验证

  1. 重启 VS Code: 重启 VS Code 以确保配置生效。

  2. 查看 Clangd 输出: 在 VS Code 的输出窗口中选择 clangd,查看是否有错误信息。 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/644812
推荐阅读
相关标签
  

闽ICP备14008679号