Jetson nano(ubuntu18.04)使用新版vscode无法ssh连接
本文解决了VSCode 1.99+版本在Jetson Nano(Ubuntu 18.04)上远程连接时因glibc版本过低导致的问题。通过编译安装glibc 2.28到用户目录,下载ARM64版VSCode Server,并使用patchelf工具修改node依赖路径,使其适配新glibc。过程中解决了gawk缺失、LD_LIBRARY_PATH错误、libstdc++依赖等问题,最后通过创建跳过
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:configure: error: missing or too old: gawk
# 安装编译依赖工具 sudo apt install -y gawk bison flex gcc g++ make -
报错 2:LD_LIBRARY_PATH shouldn't contain the current directory
# 解决:临时清空环境变量 unset LD_LIBRARY_PATH -
报错 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
-
获取本地 VS Code 的 Commit ID:本地 VS Code 按 Ctrl + Shift + P,输入About ,复制Commit(提交) ,例如:994fd12f8d3a5aa16f17d42c041e5809167e845a
-
下载并解压 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: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: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 端连接了
更多推荐
所有评论(0)