前言

最近又开始想用 wsl 写 c++,然后发现以前装的 clangd-14 无视我编译数据库当中的 -std=c++23,十分难受,因此用 github release 上面的源码安装一次。

问题

很逆天的问题,直接 include iostream 时,clangd 报错 "stddef.h not found"。很好,血压直接上来了。

解决

查了一下资料,我的 clangd 放在 /usr/bin 下面,clangd 查一些标准库头文件会去 ../lib/clang/(version)/ 下面查找。因此我需要把下载的 lib 文件夹丢到 /usr 下面去,最终完整路径应该是:/usr/lib/clang/19

解决了吗?回到 vscode,clangd 继续报逆天的 "stddef.h not found"

无奈,在 vscode 当中打开 clangd 的日志,居然发现:

1
2
3
4
5
6
/home/ubuntu2204/gcc131/bin/g++ 
--driver-mode=g++
-g -std=c++23
-o CMakeFiles/co_cpp.dir/main.cpp.o
-c -resource-dir=/usr/lib/llvm-14/lib/clang/19
-- /home/nico/cpp/co_cpp/main.cpp

WTF?这个 -c -resource-dir=/usr/lib/llvm-14/lib/clang/19 是咋设置出来的,找了一下未果,直接把 lib cp 过去。最终完美解决