news 2026/8/22 12:43:49

linux系统中Vscode使用clangd实现代码跳转,以及一些clangd的使用中可能会遇到的一些问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
linux系统中Vscode使用clangd实现代码跳转,以及一些clangd的使用中可能会遇到的一些问题

linux下用vscode配置clangd教程

1、下载clangd

官网:Releases · clangd/clangd · GitHub

到clangd官网下载.zip压缩包并解压

unzip ./clangd-linux-22.1.6.zip -d /home/orange/ #解压地址填自己的

2、安装vscode和clangd插件

安装vscode:略

安装clangd插件:到vscode的插件市场搜索clangd即可

3、更改插件设置

  • 打开clangd插件的设置

  • 根据自己解压的位置找到文件里的bin/clangd,并将文件地址复制下来

  • 找到"clangd path"选项,将刚才的可执行文件的地址复制到里面

  • 检查并禁用 C/C++ 插件冲突

    微软的 C/C++ 插件和 clangd 会争夺代码提示的控制权,导致功能异常。你需要完全禁用前者的智能提示功能。

  1. 在 VSCode 中按Ctrl+Shift+P,输入Preferences: Open Workspace Settings (JSON)并打开。

  2. 在设置文件中,加入以下两行:

{ "C_Cpp.intelliSenseEngine": "disabled", "C_Cpp.autocomplete": "disabled" } ​ 注意disabled的d不要大写

4、生成compile_commands.json

  • 如果你的项目使用 CMake(最常见的情况): 这是最简单的场景。在编译时添加一个参数即可。

    # 在项目根目录下执行 mkdir -p build && cd build cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..

    生成后,为了方便 clangd 找到,最好在项目根目录创建一个软链接:

    # 在项目根目录下执行 ln -sf build/compile_commands.json .
  • 如果你的项目使用 Makefile: 推荐使用Bear工具来生成。

    # 首先安装 Bear sudo apt install bear # 然后,在你平时编译的命令前加上 bear -- bear -- make

    这个命令会在当前目录生成compile_commands.json文件。

5、验证与重启

完成以上步骤后,按以下顺序操作:

  1. 重启 clangd:在 VSCode 中按Ctrl+Shift+P,运行clangd: Restart language server命令。

  2. 重新加载窗口:如果上一步无效,按Ctrl+Shift+P,运行Developer: Reload Window重新加载整个 VSCode 窗口。

  3. 检查索引文件:重新打开项目后,检查项目根目录是否生成了一个名为.cache的隐藏文件夹。如果有,通常表示 clangd 已成功加载并开始建立索引。

6、一些问题总结

如果还是无法进行代码跳转和代码补全的话,参考以下问题可能能够为你解答

<1>重启clangd,在输出窗口看到以下字样的时候
E[12:54:54.833] error: unknown target ABI 'lp64' E[12:54:54.835] Indexing ... failed: Couldn't build compiler instance

说明你的compile_commands.json中包含了-mabi=lp64这个编译选项,这是GCC(aarch64-none-linux-gnu-gcc)专用的 ABI 指定参数,但 clangd(基于 Clang)并不识别它,导致 clangd 无法创建正确的编译器实例,后续的代码解析、索引、补全都直接失败。

解决方案(二选一)

方案一:通过.clangd配置文件移除该选项(推荐,无需重新生成编译数据库)

在项目根目录(即包含compile_commands.json的目录)下,创建一个名为.clangd的文件,内容如下:

CompileFlags: Remove: [-mabi=lp64]

这个文件会告诉 clangd 在解析每个编译命令时,自动剔除-mabi=lp64这个标志。 保存文件后,在 VSCode 中执行Ctrl+Shift+Pclangd: Restart language server即可。


方案二:重新生成compile_commands.json,从源头去掉该选项

如果你希望彻底清理不兼容的 GCC 选项,可以在生成编译数据库时进行过滤。

  • 若使用 Bearbear -- make默认会原样记录所有参数,你可以通过sedjq后处理删除该字段:

    # 生成后手动删除 sed -i 's/-mabi=lp64//g' compile_commands.json
  • 若使用 compiledb: 可以加上--strip-include-paths等选项,但更稳妥的方式还是后处理。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 12:42:32

AI编码助手权限越界:无CVE漏洞的风险与治理框架

1. 项目缘起&#xff1a;当AI编码助手成为“影子开发者”最近在团队里推动AI编码助手&#xff08;比如Cursor、GitHub Copilot&#xff09;的规模化应用时&#xff0c;我遇到了一个非常棘手&#xff0c;但又普遍存在、鲜少被公开讨论的问题。我们给AI助手设定了清晰的“行动纲领…

作者头像 李华
网站建设 2026/8/22 12:35:59

【工作杂谈】20260806_CROSS JOIN 的神奇用法:灵活生成多维聚合组合

文章目录1、CROSS JOIN简介2、大数据下的应用场景2.1 引入分组聚合函数2.1.1 大数据领域 OLAP 分组扩展引入时间线2.2 引入CROSS JOIN搭配辅助表2.3 详细步骤2.3.1 第一个组合&#xff1a;255 0 0 0 02.3.2 第一个组合&#xff1a;255 255 0 0 2552.3.3 组合总结3、CROSS JOIN扩…

作者头像 李华
网站建设 2026/8/22 12:32:24

把任意文本变成知识图谱:rahulnyk/knowledge_graph 完整上手指南

把任意文本变成知识图谱&#xff1a;rahulnyk/knowledge_graph 完整上手指南 【免费下载链接】knowledge_graph Convert any text to a graph of knowledge. This can be used for Graph Augmented Generation or Knowledge Graph based QnA 项目地址: https://gitcode.com/g…

作者头像 李华
网站建设 2026/8/22 12:32:15

【多智能体】AI 金融智能体团队案例讲解

目录 案例简介 案例目标 核心功能 技术要点 预期效果 技术栈与核心依赖 编程语言 核心框架 项目配置 环境变量配置 依赖安装 项目结构 关键文件说明 核心代码实现 1. 导入依赖模块 2. 初始化数据库 3. 创建网络智能体 4. 创建金融智能体 5. 创建智能体团队 …

作者头像 李华
网站建设 2026/8/22 12:24:27

Redis 缓存与 MySQL 一致性:延迟双删机制的工程痛点与架构演进

文章目录缓存与数据库双写一致性迷局&#xff1a;延迟双删的底层溃败与工业级架构重构&#x1f333; 核心基础&#xff1a;底层结构与物理模型&#x1f332; 核心原理&#xff1a;机制拆解与失效本质⏱️ 核心公式的物理边界&#xff1a;三大参数的深度拆解&#x1f50d; 为什么…

作者头像 李华