clangd 突然找不到系统头文件
TLDR:如果代码可以编译,且clangd之前工作也正常,而你刚更新了一些包,那检查下你新安的包里有没有高版本的libgcc-*-dev
,他们会干扰clangd。
环境
- Ubuntu 22.04
- GCC 11.3.0(伏笔)
- Clangd 14.0.0
今天重启了系统,更新了一些包,然后发现原来没事的clangd抽风了,cstdint
和iostream
之类的自带头文件都找不到,std
也说找不到,报了一堆错。代码还是可以正常编译,重新cmake
,重启vscode server,重装clangd都无济于事。
用别的机子登了一下,问题依旧,那确定是服务器方面问题,遂运行clangd --check=simple.cc
测试看看他的配置正常不正常。然后就发现他找的gcc路径显示版本似乎是12(其实是libgcc-12-dev
),但系统上按说只安装了gcc 11。apt list | grep libgcc-.*-dev
,发现系统上真安了libgcc-12-dev
,删掉他,clangd就又用回gcc11了,就好了。
也忘了是怎么更新的那一堆包,反正系统提示可以更新,就直接更了。还得是那句话:没事就别动它。