目录
一、错误
在使用vscode的remote-ssh远程连接centos 7的服务器时,会报错,如图:
could not fetch remote envionment
failed to connect to the remote extension host server (Error: Connection error: Unauthorized client refused)
二、根据日志查看原因
查看服务器上的日志(路径为~/.vscode-server/.c13f1abb110fc756f9b3a6f16670df9cd9d4cf63.log
其中后面这个很长的字符串是vscode的提交id,可以在本地vscode的
Help
的About
里面看到,不用管
报错信息如图
error: /lib64/libstdc++.so.6: version 'GLIBCXX_3.4.20′ not found
,所以可以知道原因就是因为centos7的c/c++运行库版本太低了,因此我们需要更新版本。
三、更新c/c++运行库版本(从源码更新)
由于我没找到arm机器上现成的运行库,又使用scl安装gcc高版本依然没有解决问题(但是后续用scl安装的时候好像也没问题,理论上应该是没问题的,不过此处还是以源码安装的),所以我选择从源码安装c/c++运行库(x86和arm都可以用源码安装)。
参考链接
1. 安装依赖包
yum install -y gcc gcc-c++ gcc-gnat libgcc libgcc.i686 glibc-devel bison flex texinfo build-essential zlib-devel
2. 下载源码,依赖,
$ wget https://mirrors.aliyun.com/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz
$ tar -zxvf gcc-7.5.0.tar.gz
$ cd gcc-7.5.0
# 下载依赖
$ ./contrib/download_prerequisites
3. 编译安装
$ mkdir build
$ cd build
$ ../configure --prefix=/usr/local/gcc-7.5 --enable-checking=release --enable-languages=c,c++
# 不要加--disable-multilib
$ make -j4
$ make install
4. 建立软链接
# 删除原来的
$ rm /usr/lib64/libstdc++.so.6
# 建立新的
$ ln -s /usr/local/gcc-7.5/lib64/libstdc++.so.6.0.24 /usr/lib64/libstdc++.so.6
5. 检查软链接是否正确
$ ls -n /lib64/libstdc++.so.6
lrwxrwxrwx 1 0 0 19 Nov 30 2019 /lib64/libstdc++.so.6 -> libstdc++.so.6.0.24
$ strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX_3.4.24 # 如果结果是空,说明有问题
6. 如果找不到库,可以全局搜索一下
1、在全局或者在gcc目录下搜索库
find / -name libstdc++.so.6
参考输出(我这里安装的gcc有点多,找到一个正确的就行):
[root@host-11-0-0-140 .libs]$ find / -name libstdc++.so.6
/root/gcc-7.5.0/build/aarch64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/root/gcc-7.5.0/build/stage3-aarch64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/root/gcc-7.5.0/build/prev-aarch64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/usr/local/gcc-7.5/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6
2、找到后,先确认一下libstdc++.so.6的版本,如下,后缀为6.0.24,版本是满足要求的,路径为/usr/local/gcc-7.5/lib64/libstdc++.so.6.0.24
[root@host-11-0-0-140 ~]# ls -ln /usr/lib64/libstdc++.so.6
lrwxrwxrwx 1 0 0 44 Jan 16 15:59 /usr/lib64/libstdc++.so.6 -> /usr/local/gcc-7.5/lib64/libstdc++.so.6.0.24
3、删除旧的软链接,再建立新的软链接
$ rm /usr/lib64/libstdc++.so.6
$ ln -s /usr/local/gcc-7.5/lib64/libstdc++.so.6.0.24 /usr/lib64/libstdc++.so.6
$ strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX_3.4.24
四、验证vscode连接
我这里是重启电脑了的,猜测是vscode的服务需要重启,但是我也不知道用什么命令重启服务,反正我是直接重启电脑了。
正常运行romote-ssh,可以正常连接上服务器,下面是成功时候的日志截图,已经没有报错了。
如果还是不行,而你又确定CXX库版本已经配置好了,那么可以试试重启
一下服务器(reboot
),重启之后应该就可以正常连上了。如果不行,就再检查一下日志。