用 vscode +clangd 查看 linux sdk代码

Viewed 106

问题描述


以前用 vscode +clangd 查看 k230 linux sdk代码,没怎么配置就能正常运行了,最近重做一个工程,有可能重安装了clangd最新版本,目前clangd 生成index 出错,完全不能跳转。能否麻烦提供一下能正常工作查看k230 linux 的clangd版本,我准备重装一下系统

硬件板卡


CANMV_K230 _LP4 V3.0

软件版本


k230 linux sdk

3 Answers

在sdk主目录创建.clangd文件,内容如下


CompileFlags:
  # 核心配置:指定交叉编译器,clangd 会自动解析其内置的 C++ 头文件路径
  #Compiler: "/opt/toolchain/Xuantie-900-gcc-linux-6.6.0-glibc-x86_64-V3.0.2/bin/riscv64-unknown-linux-gnu-g++"
  Remove:
    - "-mcpu=c908v"          # 移除未知的 c908v CPU 参数
    - "-mabi=lp64"           # 移除和 lp64d 冲突的 abi 参数
    - "-march=rv64imac_zicsr_zifencei"  # 移除冲突的 march 参数
    - "-mno-riscv-attribute"
    - "-fno-allow-store-data-races"
    - "-fconserve-stack"
  # 补充 K230 架构必需的编译参数(避免架构相关报错)
  Add:
    - "-mabi=lp64d"
    - "-march=rv64gcv"
    - "-Wno-unknown-cpu"
    - "-Wno-unused-command-line-argument"


# 可选:限制索引范围(避免 clangd 索引整个 Linux 内核,提升性能)
Index:
  Background: Build
  #Files:
    # 只索引你的业务代码(比如 camera_rtsp_demo),跳过内核代码
    #- buildroot-overlay/package/camera_rtsp_demo/**/*
    # 排除内核目录(减少无用索引)
    #- !output/**/linux-*/**/*

Diagnostics:
  # 屏蔽架构相关的无效警告
  Suppress:
    - "drv_unknown_argument"  # 屏蔽交叉编译器参数相关的无关警告
    - "unknown-cpu"
    - "unused-command-line-argument"

部分出错信息
version 1: CreateTargetInfo() return null
E[09:48:29.289] error: unknown target CPU 'c908'
E[09:48:29.289] Failed to prepare a compiler instance: valid target CPU values are: generic-rv64, rocket-rv64, sifive-p450, sifive-p670, sifive-s21, sifive-s51, sifive-s54, sifive-s76, sifive-u54, sifive-u74, sifive-x280, veyron-v1, xiangshan-nanhu, generic, rocket, sifive-7-series
[Error - 09:48:29] Request textDocument/codeAction failed.

[object Object]
I[09:48:29.326] <-- $/setTrace
I[09:48:29.326] unhandled notification $/setTrace

I[09:49:10.438] --> $/progress
E[09:49:10.459] Indexing /home/ubuntu/k230_linux_sdk/output/k230_canmv_v3_defconfig/build/face_detect/src/face_detection.cc failed: Couldn't build compiler instance

有试过重启电脑吗?

虚拟机,每次 都重启