前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【开发 | 环境配置】解决 VSCode 编写 eBPF 程序找不到头文件

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

作者头像
Lokinli
发布2024-05-25 18:28:41
950
发布2024-05-25 18:28:41
举报
文章被收录于专栏:以终为始以终为始

问题描述:

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

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

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

解决方案:

应用场景:

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

方案/方法:

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

检查 clang 是否安装
代码语言:javascript
复制
sudo apt-get install clang

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

编写 Makefile 文件

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

代码语言:javascript
复制
# 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

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

安装 bear 工具:

代码语言:javascript
复制
sudo apt-get install bear
生成 compile_commands.json 文件

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

代码语言:javascript
复制
bear -- make
compile_commands.json 文件

生成的 compile_commands 文件如下所示:

代码语言:javascript
复制
[
    {
        "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 文件

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

代码语言:javascript
复制
CompileFlags:
  Add: 
    - -isystem
    - /usr/src/linux-headers-$(shell uname -r)/include
    - -isystem
    - /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 中添加以下配置:

代码语言:javascript
复制
{
    "clangd.path": "clangd",
    "clangd.arguments": [
        "--compile-commands-dir=${workspaceFolder}"
    ]
}

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

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

生效与验证
  1. 重启 VS Code: 重启 VS Code 以确保配置生效。
  2. 查看 Clangd 输出: 在 VS Code 的输出窗口中选择 clangd,查看是否有错误信息。 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题描述:
  • 解决方案:
    • 应用场景:
      • 方案/方法:
        • 检查 clang 是否安装
        • 编写 Makefile 文件
        • 安装 bear
        • 生成 compile_commands.json 文件
        • compile_commands.json 文件
        • 配置 .clangd 文件
        • 配置 VS Code 使用上述生成的 compile_commands.json
        • 生效与验证
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档