首页 > 其他分享 >【环境配置笔记】基于clang15搭建liunx内核代码阅读环境

【环境配置笔记】基于clang15搭建liunx内核代码阅读环境

时间:2022-11-20 15:36:07浏览次数:41  
标签:clang15 clangd C++ 环境 bear 索引 json liunx 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(https://github.com/clangd/clangd/releases)下载最新的clangd工具:

【环境配置笔记】基于clang15搭建liunx内核代码阅读环境_clangd

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

unzip clangd-linux-15.0.3.zip

2.2 配置clangd

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

【环境配置笔记】基于clang15搭建liunx内核代码阅读环境_c++_02

打开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

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

编译完会生成compile_commands.json。

3.索引Linux源码

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

CompileFlags:
Remove:
[
-mabi=lp64,
]

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

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

【环境配置笔记】基于clang15搭建liunx内核代码阅读环境_c++_03

4.跳转测试

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

【环境配置笔记】基于clang15搭建liunx内核代码阅读环境_json_04

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

【环境配置笔记】基于clang15搭建liunx内核代码阅读环境_clangd_05

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


标签:clang15,clangd,C++,环境,bear,索引,json,liunx,linux
From: https://blog.51cto.com/qmiller/5871517

相关文章

  • 1.1 搭建开发环境
    1.1搭建开发环境项目架构:**1**为项目添加maven依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http......
  • SpringMVC - 环境搭建
    一、MVC介绍M(model): 数据层。有两种数据,第一种java实体类,第二种daoV(view):视图层。HTML,jsp页面等。C(Controller):控制层。二、SpringMVC的环境搭建1.创建maven......
  • 第2章搭建CRM项目开发环境-数据库的设计表设计原则,设计结构,实例
    第2章搭建CRM项目开发环境-数据库的设计表设计原则,设计结构,实例2.1CRM项目数据库设计2.1.1数据库设计原则我们可以结合项目原型来考虑数据库设计,市场活动,用户,这些都......
  • Flutter 环境配置提示 cmdline-tools component is missing
    原文;http://bbs.itying.com/topic/628f350a7d8f7c12a0cfcd90 问题: Androidtoolchain-developforAndroiddevices(AndroidSDKversion30.0.2)   ✗cmdli......
  • eclipse android快速搭建开发环境
    1.下载eclipse3.5以及以上ide和javaee工具​​​http://java.sun.com/javase/downloads/index.jsp​​​2下载AndroidSDK3.在eclipse下......
  • 基于wsl (wslg)在Windows中运行linux开发环境
    基于wsl(wslg)在Windows中运行linux开发环境相比虚拟机速度快很多和host机无缝集成,体验很棒既保留了linux的开发环境,同时使用了windows的操作体验详细x11的GUI模式......
  • 环境
    我觉得我该把这玩意发出来以便在cnblogs抽风时能看到header.cpp#include<bits/stdc++.h>usingnamespacestd;usingpii=pair<int,int>;usingvi=vector<int>;......
  • 在Linux环境中安装JDK
    一linux软件安装常用的方式对比Linux下的软件安装,主要有如下三种,“正规”程度依次递减:1、使用标准的yum/apt/yast包管理程序安装2、使用标准rpm/deb或厂商自己的安装包(比如......
  • 虚拟机Ubuntu环境下的Linux驱动开发环境搭建
    安装Ubuntu版本longtime版本,目前最新是22.04,下边是下载网址https://ubuntu.com/download/desktop具体的安装虚拟机和Ubuntu的教程,下边是参考教程网址https://blog.csd......
  • Windows下开发环境的搭建(前端vue后端java)
    0.下载或拷贝jdk(目前项目使用的版本包括1.6,1.7,1.8,11),配置Java环境变量:新建系统变量JAVA_HOME和CLASSPATH变量名:JAVA_HOME变量值:C:\ProgramFiles\Java\jdk1.7.0......