一直用clion做远程开发,不管是颜值还是自动补全都挺舒服,但是今天遇到一个问题,就是clion找不到Linux中的库文件,所以就没有代码补全,但是编译是正常的。更具体点,找得到 unistd.h
但是找不到sys/types.h
。
解决办法
点击Help| Find Action, 输入Registry,之后勾选clion.remote.tar.dereference
原因
clion的remote自动补全是将远程Liunx下的相关头文件缓存到本地,而这个缓存是先使用tar打包,然后下载到本地,然而Linux上的一些头文件实际上是软链接,tar打包的时候会按软链接打包,下载到本地解压后自然无法解析。勾选clion.remote.tar.dereference是让tar命令 Enable dereference (-h) and ‘–hard-dereference’ tar arguments这样就可以解析软链接到对应文件,下载到本地的就是文件而不是软链接。
修改之后再Tool -> Resync with remote hosts,如果还是不行就把本地缓存删掉重新Resync。
本地缓存一般在C:\Users\用户名\AppData\Local\JetBrains\CLion2021.1\.remote
下,在Problems中也可以看到缓存路径(一般是` Cannot open file ***路径,Permission Denied)