Clang编译器编译正常但持续提示库路径找不到等错误的解决求助
兄弟,太懂这种明明编译能跑通,但编辑器/IDE一直跳红报错误提示的糟心感了!既然你已经确认stdc++、clang、gcc都安装正常,编译也没问题,那大概率是语言服务器/编辑器的配置没跟上实际编译环境,给你几个实打实的排查方向:
检查编辑器的编译器路径配置
比如用VS Code的话,打开设置(Ctrl+,),搜索C_Cpp.default.compilerPath,确认它指向的是你实际用来编译的clang路径(终端输clang++ --version就能看到路径)。别让编辑器用了旧的或者不存在的编译器版本。手动添加标准库的include路径
有些时候语言服务器没自动识别到stdc++的头文件路径,你可以手动补全。还是以VS Code为例,在C_Cpp.default.includePath里加上gcc的标准库路径,比如Linux下可能是:"/usr/include/c++/11", "/usr/include/x86_64-linux-gnu/c++/11"版本号换成你实际的gcc版本就行。
重置语言服务器缓存
很多时候是缓存过期导致的误报,VS Code里按Ctrl+Shift+P,输入C_Cpp: Reset IntelliSense Database,执行完重启编辑器,大概率能消掉那些莫须有的错误提示。确保编译参数和编辑器配置一致
如果是CMake项目,记得加-DCMAKE_EXPORT_COMPILE_COMMANDS=ON参数生成compile_commands.json,然后让编辑器加载这个文件(VS Code里设置C_Cpp.default.compileCommands指向该文件路径)。这样语言服务器能完全复用编译时的参数,就不会瞎报错了。检查编译器版本是否统一
比如你终端编译用的是clang 15,但编辑器配置里选的是clang 10,版本差异也会导致这种“编译正常但提示错误”的情况,务必让两者版本匹配。
要是用的是CLion之类的IDE,就去工具链配置里确认clang和gcc的路径、版本都选对,再同步一下CMake配置试试。
备注:内容来源于stack exchange,提问作者ri yo

