用 emacs 浏览 C/C++ 项目

本文记录了作者在 Ubuntu 20.04 系统上使用 Emacs 阅读和调试 C/C++ 项目的过程,包括遇到的错误和解决方案。通过安装和配置 lsp-mode、bear、clangd 等工具,解决了“找不到编译数据库”和“go to definition”等功能的问题。作者还讨论了为什么选择 Emacs 而不是 VSCode,并分享了在阅读 Linux 内核源码时的经验和技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

更新2021/10/18: 几个要注意的点截图:https://gitee.com/guyuming76/personal/commit/a285e1fc0d5be92e6e7a7a3bd1a2ebd8a8d9798c

----------------------------------------------------分割线下是过去的内容--------------------------------------

这两天刚学会用 emacs 读 C/C++ 项目代码,记录下踩过的坑。

主要是跟着 https://emacs-lsp.github.io/lsp-mode/tutorials/CPP-guide/ (下面称作原文)配的,系统环境是 ubuntu 20.04。

原文直接用 emacs 打开 emacs 源码来演示功能,而我希望打开 https://github.com/neutrinolabs/pulseaudio-module-xrdp ,所以一开始没有下载 emacs 的源码,而是直接 sudo apt install emacs, 装的是 26.3 版。

把原文 lsp-mode configuration 那段里面的 lisp 代码,贴进 ~/.emacs , 重启 emacs 后,打开 c 语言文件,想尝试 go to definition, find reference 等功能,却发现一个类似 “找不到编译数据库” 错,原来 lsp-mode 需要一个 compile_commands.json 文件, 如何生成? 先 sudo apt install bear , 然后在你原先运行 make 的目录下面运行 bear make, 就会在目录里产生这样一个文件。

然而,go to definition, find reference 功能还是不行,在标识符上点鼠标右键,根本不会出现包含这些功能的上下文菜单。一筹莫展,在网上狂搜,受启发运行了一下 which clangd, 结果返回空。
原来原文给过这样一个链接: https://clangd.llvm.org/installation.html ,教我在ubuntu 下
sudo apt-get install clangd-9。

我卸了clangd-9, 重新 sudo apt install clangd, 过了一关。

这里要提一下 emacs 菜单里面一堆的 buffer 子菜单,我一开始觉得莫名奇妙,后来发觉原来除了我打开的文件,系统产生的各种消息提示(日志?)也在这里,发觉系统有啥不对劲的时候可以先把各个buffer 看一遍。很多软件都是出问题后半天不知道日志文件在哪里。

但是,find reference 貌似还是不行,显示如下:
在这里插入图片描述
后来,网上下载了 emacs-27.1.tar.x

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值