【VSCode】办理VSCode 1.99以后的远程连接问题:远程主机大概不符合 glibc 和 libstdc++ VSCode 服务器的先决条件
配景VSCode曾经在1.86表现,将在2025年2月之后不再支持glibc<2.28的服务器。而就在今天,VSCode insiders更新到了1.99.0,官网表现
Starting with VS Code release 1.99 (March 2025), the prebuilt servers distributed by VS Code are only compatible with Linux distributions that are based on glibc 2.28 or later.
从VS Code 1.99版本(2025年3月)开始,由VS Code发布的预构建服务器只兼容基于glibc 2.28或更高版本的Linux发行版。
但学校的服务器仍然是CentOS7.8:glibc 版本2.27。
与其放弃VSCode和Github Copilot,我选择用户级编译glibc 2.28。
步骤
参考centos7升级glibc库到glibc-2.28,固然文章介绍的是系统级编译,但是稍加改动即可变为用户级编译
[*] 创建用户级编译的目次,这里选择~/.local/opt
cd ~
mkdir -p ~/.local/src/opt
mkdir -p ~/.local/opt
cd ~/.local/src/opt
[*] 下载源代码 (由于本人所在学校服务器已经安装高版本gcc,此处不介绍gcc的编译安装,避免教程错误)
# 升级glibc需要的依赖(我不清楚除了make之外的是否必要,但是我都安装了)
wget https://ftp.gnu.org/gnu/binutils/binutils-2.32.tar.gz
wget https://ftp.gnu.org/gnu/bison/bison-3.2.1.tar.gz
wget https://ftp.gnu.org/pub/gnu/make/make-4.3.tar.gz
# glibc-2.28安装包
wget https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
究竟上,纵然挂了梯子,官网也太慢了。所以我保举使用阿里云镜像
# 升级glibc需要的依赖
wget https://mirrors.aliyun.com/gnu/binutils/binutils-2.32.tar.gz
wget https://mirrors.aliyun.com/gnu/bison/bison-3.2.1.tar.gz
wget https://mirrors.aliyun.com/gnu/make/make-4.3.tar.gz
# glibc-2.28安装包
wget https://mirrors.aliyun.com/gnu/glibc/glibc-2.28.tar.gz
对于gcc也需要升级的服务器,请参考centos7升级glibc库到glibc-2.28(都敢于自行编译glibc,参考文章进行修改的本领肯定有吧!)
[*] 安装binutils
# 进入目录
cd ~/.local/src/opt
# 解压
tar -xzvf binutils-2.32.tar.gz
# 安装
cd binutils-2.32
./configure --prefix=$HOME/.local/opt/binutils-2.32
make -j16 # 根据CPU核心自行设置,用于并行加速
make install
安装完成后,使其收效
vim ~/.bashrc
# 在文件后面加上
# 移动到文件最后,按i开启输入,粘贴以下命令,完成后按Esc,然后输入:wq,最后Enter就好啦
export PATH="$HOME/.local/opt/binutils-2.32/bin:$PATH" # binutils 2.32
# 使其生效
source ~/.bashrc
# 测试
ld --version
[*] 安装bison
# 进入目录
cd ~/.local/src/opt
# 解压
tar -xzvf bison-3.2.1.tar.gz
# 安装
cd bison-3.2.1
./configure --prefix=$HOME/.local/opt/bison-3.2.1
make -j16 # 根据CPU核心自行设置,用于并行加速
make install
安装完成后,使其收效
vim ~/.bashrc
# 在文件后面加上
# 移动到文件最后,按i开启输入,粘贴以下命令,完成后按Esc,然后输入:wq,最后Enter就好啦
export PATH="$HOME/.local/opt/bison-3.2.1/bin:$PATH" # bison 3.2.1
# 使其生效
source ~/.bashrc
# 测试
bison --version
[*] 安装make
# 进入目录
cd ~/.local/src/opt
# 解压
tar -zxvf make-4.3.tar.gz
# 安装
cd make-4.3
./configure --prefix=$HOME/.local/opt/make-4.3
make -j16 # 根据CPU核心自行设置,用于并行加速
make install
安装完成后,使其收效
vim ~/.bashrc
# 在文件后面加上
# 移动到文件最后,按i开启输入,粘贴以下命令,完成后按Esc,然后输入:wq,最后Enter就好啦
export PATH="$HOME/.local/opt/make-4.3/bin:$PATH" # make 4.3
# 使其生效
source ~/.bashrc
# 测试
make --version
这里由于安装的只有make,而编译glibc时默认使用的是gmake,所以大概需要创建链接
# 创建符号链接
ln -s "$HOME/.local/opt/make-4.3/bin/make" "$HOME/.local/opt/make-4.3/bin/gmake"
# 使其生效
source ~/.bashrc
# 测试
gmake --version
[*] 安装glibc
# 进入目录
cd ~/.local/src/opt
# 解压
tar -zxvf glibc-2.28.tar.gz
# 安装
cd glibc-2.28
mkdir build && cd build # 注意多了一步创建build文件夹,其实上述安装步骤也可以执行这一步,使得源代码目录更干净,但是我懒,但这里必须创建
../configure --prefix=$HOME/.local/opt/glibc-2.28 --disable-profile --enable-add-ons --disable-werror # 注意需要关闭-Werror
make -j16 # 根据CPU核心自行设置,用于并行加速
make install
[*] 安装patchelf
# 进入目录
cd ~/.local/src
# 下载,如果不能访问github,自己找镜像
wget https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0.tar.bz2
# 解压
tar -jxvf patchelf-0.18.0.tar.bz2
# 安装
cd patchelf-0.18.0
./configure --prefix=$HOME/.local/
make -j16 # 根据CPU核心自行设置,用于并行加速
make install
安装完成后,使其收效
vim ~/.bashrc
# 在文件后面加上
# 移动到文件最后,按i开启输入,粘贴以下命令,完成后按Esc,然后输入:wq,最后Enter就好啦
export PATH="$HOME/.local/bin:$PATH"
# 使其生效
source ~/.bashrc
# 测试
patchelf --version
以上,就已经安装好了。
VSCode在1.99之后,有三个变量可以使用,这将使其自动运行patchelf而无需每次更新手动修改。
在~/.bashrc中添加
# vscode
export VSCODE_SERVER_CUSTOM_GLIBC_LINKER="$HOME/.local/opt/glibc-2.28/lib/ld-linux-x86-64.so.2"
# 注意,这里不同系统可能不一样(可能)
# rpath需要包含系统库,否则报错找不到libstdc++.so.6: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
# 请把 /usr/lib64 换成你的 libstdc++.so.6 所在路径
export VSCODE_SERVER_CUSTOM_GLIBC_PATH="$HOME/.local/opt/glibc-2.28/lib:/usr/lib64"
export VSCODE_SERVER_PATCHELF_PATH="$HOME/.local/bin/patchelf"
接下来直接VSCode远程连接到该服务器就好啦
碎碎念
建议先统一下载tar包,然后一边编译一边解压
FAQ
[*] 为什么官网提供了教程,我还要自己编译呢?
详情见文章linux文件目次太深无法删除办理办法
[*] 为什么各软件不用最新版?
我曾经也爱用最新版,报错多了就诚实了
[*] 为什么不降级VSCode?
固然可以降级VSCode,但是谁能放弃得了最新版得特性啊
[*] libstdc++呢?
笔者的服务器已有满意条件的版本,因此不再介绍避免堕落
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]