【环境配置笔记】VScode+clang15搭建linux内核代码阅读环境

阅读: 评论:0

【环境配置笔记】VScode+clang15搭建linux内核代码阅读环境

【环境配置笔记】VScode+clang15搭建linux内核代码阅读环境

环境:

  1. Toolchain(yocto导出)
  2. Linux5-15,arm64
  3. VS code
  4. clangd15.0.3

1. VScode配置

在VS code / VS code server中配置以下插件:

  • Clangd
  • C/C++
  • C/C++ Extension Pack
  • C/C++ Snippets
  • Code Runner
  • Code Spell Checker
  • compareit
  • DeviceTree
  • Tabnine AI Autocomplete
  • Bracket Pair Colorization Toggler
  • Rainbow Highlighter

2. clangd配置

2.1 下载clangd

从clangd的github()下载最新的clangd工具:

然后将其解压到/home/xxx目录下:

unzip clangd-linux-15.0.3.zip

2.2 配置clangd

根据下图的步骤打开json文件,我这里演示的是远程服务器端的配置,如果你本身是linux环境,则需要先点击【用户】,再按第四步来。

打开setting.json文件后,填入以下内容:

这里的"Disabled"

{"C_Cpp.default.intelliSenseMode": "linux-gcc-arm64","C_Cpp.intelliSenseEngine": "Disabled","clangd.path": "/home/xxxx/clangd_15.0.3/bin/clangd","clangd.arguments": ["--log=verbose",],
}

C/C++插件里的intellisense和clangd是冲突的,如果我们没有手工设置setting.json,当使用vscode打开C文件时时会提示禁止intellisense,不要点击!!!!!因此点击了会有Bug,其中的"Disabled"会被改成"disabled"。

2.3 安装bear

在vscode中使用clangd,要实现精确跳转,需要使用bear分析源码生成compile_commands.json。

执行如下命令安装:

sudo apt instll bear

3.使用bear编译内核【必须先编译】

由于我们使用的是Yocto导出的Toolchain,在激活工具链后需要先使用unset LDFLAGS,然后使用以下命令:

bear -l /usr/lib/x86_64-linux-gnu/bear/libear.so make -j12!!!!!!!!!For ubuntu22.04!!!!!!!!!
bear --library  /usr/lib/x86_64-linux-gnu/bear/libexec.so -- make -j8

由于此时我们使用的是Yocto SDK,里面不包含bear的库,因为我们需要手动指定库的位置。

编译完会生成compile_commands.json。

3.索引Linux源码

在索引源码之前,还需要再Linux文件夹中新建.clangd文件,并填入以下内容:

CompileFlags:Remove:[-mabi=lp64,]

clangd索引失败的原因大部分都是CompileFlags的问题,你可以在索引失败的clangd日志中查看出错的原因,并添加需要移除的CompileFlags。

现在用VS code打开Linux文件夹,打开任意c文件触发索引,你会看到下面的索引进度:

4.跳转测试

这里以main.c进行测试,找到start_kernel函数:

Ctrl+鼠标点击setup_arch函数,可以看到能够正确跳转到arm64架构下的setup_arch函数。

参考:在Ubuntu中搭建嵌入式Linux开发环境

本文发布于:2024-01-27 18:11:03,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063502651826.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:环境   内核   代码   笔记   linux
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23