ssh连接时报错如图:

这是由于VS Code 1.99+ 远程连接要求服务器 glibc ≥ 2.28,但 Ubuntu 18.04 默认仅支持 glibc 2.28;且 Jetson Nano 是 aarch64 架构,需适配 ARM 版本依赖,不能直接用 x64 方案。

解决办法有两种:

1. 降级vscode到合适版本

2. 在Jetson nano(ubuntu18.04)端安装对应的glibc 2.28

本次采用方法2来解决

一、编译安装 glibc 2.28

在用户目录安装高版本 glibc,避免影响系统库。

# 创建工作目录
mkdir -p ~/tools/glibc
cd ~/tools

# 下载glibc 2.28源码
wget http://ftp.gnu.org/gnu/libc/glibc-2.28.tar.gz

# 解压源码
tar -xzf glibc-2.28.tar.gz

# 创建编译目录(glibc不能在源码目录编译)
mkdir glibc-build && cd glibc-build

# 配置安装参数
../glibc-2.28/configure --prefix=$HOME/tools/glibc --disable-werror

# 编译+安装
make -j4
make install

遇到的报错及解决:

  1. 报错 1:configure: error: missing or too old: gawk

    # 安装编译依赖工具
    sudo apt install -y gawk bison flex gcc g++ make
  2. 报错 2:LD_LIBRARY_PATH shouldn't contain the current directory

    # 解决:临时清空环境变量
    unset LD_LIBRARY_PATH
  3. 报错 3:missing auxiliary programs: makeinfo

    # 安装 texinfo
    sudo apt install -y texinfo

编译成功验证:

# 查看核心动态链接器是否生成
ls -lh ~/tools/glibc/lib/ld-2.28.so

输出类似 -rwxr-xr-x 1 yan yan 1.3M ... ld-2.28.so 即成功。

二、部署 aarch64 版本 VS Code Server

  1. 获取本地 VS Code 的 Commit ID:本地 VS Code 按 Ctrl + Shift + P,输入About ,复制Commit(提交) ,例如:994fd12f8d3a5aa16f17d42c041e5809167e845a

  2. 下载并解压 ARM64 版本 Server

    # 创建目录(替换为你的Commit ID)
    # 例如:mkdir -p ~/.vscode-server/cli/servers/Stable-994fd12f8d3a5aa16f17d42c041e5809167e845a/server
    mkdir -p ~/.vscode-server/cli/servers/Stable-<你的Commit ID>/server
    
    # 下载arm64版本(替换Commit ID)
    wget https://update.code.visualstudio.com/commit:<你的Commit ID>/server-linux-arm64/stable
    
    # 解压到指定目录
    tar -zxf stable -C ~/.vscode-server/cli/servers/Stable-<你的Commit ID>/server --strip-components=1
    
    # 删除压缩包
    rm stable

三、修改 VS Code Server 的 node 依赖(适配 glibc 2.28)

# 1. 安装patchelf工具
sudo apt install -y patchelf

# 2. 进入node所在目录(替换Commit ID)
cd ~/.vscode-server/cli/servers/Stable-<你的Commit ID>/server

# 3. 修改node的动态链接器和依赖路径
patchelf --set-interpreter $HOME/tools/glibc/lib/ld-2.28.so node
patchelf --set-rpath $HOME/tools/glibc/lib node

遇到的报错及解决:

  1. 报错 1:error while loading shared libraries: libstdc++.so.6 

    # 安装gcc-8(附带高版本libstdc++)
    sudo apt install -y gcc-8 libstdc++6
    
    # 复制系统的libstdc++.so.6到glibc目录
    sudo cp /usr/lib/aarch64-linux-gnu/libstdc++.so.6 ~/tools/glibc/lib/
  2. 报错 2:error while loading shared libraries: libstdc++.so.1 

    # 安装libgcc1
    sudo apt install -y libgcc1
    
    # 查找并复制libgcc_s.so.1(aarch64路径)
    find / -name "libgcc_s.so.1" -type f 2>/dev/null
    sudo cp /lib/aarch64-linux-gnu/libgcc_s.so.1 ~/tools/glibc/lib/
    
    # 赋予权限
    sudo chmod 755 ~/tools/glibc/lib/libstdc++.so.6 ~/tools/glibc/lib/libgcc_s.so.1

依赖适配验证:

# 执行node查看版本,输出版本号即成功
./node -v

四、跳过 VS Code 版本校验

这是为了强制 VS Code 忽略系统依赖检测,直接连接

# 创建跳过文件
sudo touch /tmp/vscode-skip-server-requirements-check && sudo chmod 777 /tmp/vscode-skip-server-requirements-check

接下来就可以正常回到 VS code 端连接了

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐