手动编译clangd
CMake版本要求
根据llvm警告,cmake版本不低于3.20.0
通过下载二进制程序直接使用
https://github.com/Kitware/CMake/releases/在此链接下下载自己架构对应的cmake二进制程序
1 2 3 4
| tar -zxvf cmake-4.0.0-rc4-linux-x86_64.tar.gz
export PATH=$HOME/cmake-4.0.0-rc4-linux-x86_64/bin:$PATH
|
编译clangd
下载llvm-project源码包
https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.0/llvm-project-20.1.0.src.tar.xz此链接下下载llvm-project-20.1.0.src.tar.xz
编译clangd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| tar -xvf llvm-project-20.1.0.src.tar.xz mkdir -p llvm-project-20.1.0.src/build cd llvm-project-20.1.0.src/build
cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=$HOME/llvm-20.1.0 \ -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" \ ../llvm
make -j$(nproc) install
export PATH=$HOME/llvm-20.1.0/bin:$PATH
|
vscode配置
在.vscode下面添加settings.json
1 2 3 4 5 6 7 8 9 10 11 12 13
| { "C_Cpp.errorSquiggles": "disabled", "C_Cpp.dimInactiveRegions": false, "clangd.path": "/usr/bin/clangd-13", "clangd.arguments": [ "--background-index=false", "--pch-storage=memory", "--log=info", "--header-insertion=never", "--clang-tidy", "--compile-commands-dir=${workspaceFolder}" ], }
|
在当前工作目录下添加.clangd
1 2 3
| CompileFlags: Add: --target=aarch64-linux-gnu Remove: [-mno-direct-extern-access, -fconserve-stack, -fno-allow-store-data-races, -mfunction-return=thunk-extern, -mindirect-branch-cs-prefix, -mindirect-branch-register, -mindirect-branch=thunk-extern, -mskip-rax-setup, -mpreferred-stack-boundary=3, -mno-fp-ret-in-387, -fno-var-tracking-assignments, -mabi=lp64]
|
永久添加环境变量
1 2
| export PATH=$HOME/llvm-20.0.1/bin:$PATH export PATH=$HOME/cmake-4.0.0-rc4-linux-aarch64/bin:$PATH
|
生成compile_commands.json
1 2
| bear make -j100 bear make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j 8
|
bear源码编译
1 2 3 4 5 6 7 8 9 10 11
| git clone https://github.com/rizsotto/Bear.git cd Bear
cmake -DCMAKE_INSTALL_PREFIX=$HOME/bear . make -j$(nproc) make install
export PATH=$HOME/bear/bin:$PATH
|