Ubuntu18.04环境下,vscode使用clangd、bear实时准确跳转过程中遇到的compile_commands.json无法解析问题
环境:
Ubuntu18.04
安装了bear 版本是2.3.11-1,使用bear --version查看的
windows下已经安装了vscode 1.98.2并且安装了clangd插件已经clangd server.
问题:使用bear工具编译下x210开发板的uboot源码,生成了compile_commands.json,但是重新打开vscode或者右键---》命令面板---》clangd: Reset Language Server,都无法解析compile_commands.json,当然也无法生产“.cache”文件夹。
具体编译脚本如下
rm .cache -rf
rm compile_commands.json
bear make distclean
bear make infinity2m_spinand_defconfig
bear make -j8 > build_log
root@ubuntu:~/porting_ssd202d/Purple-Pi-R1/boot_src# bear --version
bear 2.3.11
后来我在“知乎”上查找类似问题。找到一篇文章写的很好。
https://zhuanlan.zhihu.com/p/26081028223
里面提到,bear 3.0版本之前的编译是
bear make # bear3.0之前的版本 我的是2.3.11满足
bear -- make # bear3.0之后的版本
他在文章中提到需要将生成的compile_commands.json中的“cc”字样用交叉编译工具“arm-linux-gcc”(我的是这个名字,创建了一个符号链接)
root@ubuntu:~/porting_ssd202d/Purple-Pi-R1/boot_src# which arm-linux-gcc
/usr/local/arm/arm-2009q3/bin/arm-linux-gcc
root@ubuntu:~/porting_ssd202d/Purple-Pi-R1/boot_src#
最终使用结果如下:
最后重新打开vscode或者右键---》命令面板---》clangd: Reset Language Server,clangd就自动解析compile_command.json了.
具体原因:bear 默认使用的是cc编译器。