在x86笔记本上编译安装YouCompleteMe插件
最近入手了一台x86架构的小笔记本电脑,CPU是1核2线程。想作为临时维护机,平时连接其他计算机,或者临时开发。于是安装了AntiX系统(为数不多还在维护x86软件仓库的发行版),并且准备使用Vim作为编辑器(VSCode开销太大装不上)。
Vim的包管理
使用vim-plug管理Vim插件,使用方法与Vundle类似。
1 | call plug#begin() |
安装YouCompleteMe
使用:PlugInstall安装的只不过是YouCompleteMe的外壳。为了实现C语言的自动不全,还需要合适的后端:clangd v15+。
clangd是clang的language server,在clang-13之后官方不再提供x86二进制包。而YouCompleteMe所需的clangd最低版本是v15.0.1(目前的lts是v15.0.7)。无论如何,都需要自行编译clang了。
编译clang工具链
下载llvm-project
下载
1 | wget https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.7/llvm-project-15.0.7.src.tar.xz |
然后解压
1 | tar xf llvm-project-15.0.7.src.tar.xz |
CMake选项
进入源代码文件夹,使用cmake生成编译选项。
1 | cd llvm-project-15.0.7.src |
上面的cmake指令可以编译llvm、clang和clangd(包含在clang-tools-extra里),最后安装到$HOME/.llvm目录。为了编译速度,我舍弃了X86以外的所有架构,因为1核2线程实在是难以忍受地慢,而且除X86以外的交叉编译显然在其他计算机上运行。
注意 编译clang时内存使用量最高可达2.5G。一开始我大意了,以为笔记本2G足矣,重启一次之后不得不又开了2G swap。
编译 && 测试 && 安装
当前目录是llvm-project-15.0.7.src。
1 | cd build |

如图1所示,编译运行测试的时间就要将近5个小时,而编译则需要1天零13小时。实际上make check运行报错了,有51个test case没有通过。考虑到clang早已放弃对x86的支持,我猜测没通过的test case里有一部分是x86平台不适用的代码。
编译安装YouCompleteMe
上文提到,llvm被安装到$HOME/.llvm目录,编译YouCompleteMe的时候需要指定llvm路径,需要把下面的指令里的$HOME/.llvm修改为你的llvm的安装路径。
1 | cd ~/.vim/plugged/YouCompleteMe |
--verbose用于显示CMake的编译进度,可以不加。该命令执行完成会报错No pre built Clang 15.0.1 binaries for this system.,无视。
配置YouCompleteMe
为了让YouCompleteMe识别到clangd的安装位置,需要在.vimrc里加上一行:
1 | let g:ycm_clangd_binary_path = "/path/to/clangd" |
其中/path/to/clangd替换为clangd的路径。
Fin.