vscode使用remote-ssh连接centos 7时遇到的问题(arm和x86)

一、错误

在使用vscode的remote-ssh远程连接centos 7的服务器时,会报错,如图:

  1. could not fetch remote envionment
  2. failed to connect to the remote extension host server (Error: Connection error: Unauthorized client refused)
    在这里插入图片描述

二、根据日志查看原因

查看服务器上的日志(路径为~/.vscode-server/.c13f1abb110fc756f9b3a6f16670df9cd9d4cf63.log

其中后面这个很长的字符串是vscode的提交id,可以在本地vscode的HelpAbout里面看到,不用管

报错信息如图
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),重启之后应该就可以正常连上了。如果不行,就再检查一下日志。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_29809823/article/details/121613054