Ubuntu下VS Code编译Druid Rust代码遇GLIBCXX错误,CLion却正常的原因与解决
问题原因
- 你使用的VS Code是Snap包安装版本,Snap的沙箱机制会强制程序使用自带的
core20基础镜像里的libstdc++.so.6库,该库版本老旧,缺少Druid编译运行所需的GLIBCXX_3.4.29符号;__libc_pthread_init的查找错误同样是因为沙箱内的库与系统原生库版本不兼容导致的。 - CLion是原生安装(如Deb包或官网压缩包形式),直接调用系统环境中的标准库,而你的系统已存在满足Druid依赖的新版
libstdc++,因此编译运行正常。
解决办法
方法1:替换Snap版VS Code
卸载Snap版,改用Deb包或官网压缩包安装:
- 卸载现有Snap版VS Code:
sudo snap remove code - 安装Deb版:
- 导入微软GPG密钥:
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/ - 添加VS Code软件源:
sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list' - 更新并安装:
sudo apt update && sudo apt install code
- 导入微软GPG密钥:
- 也可直接从VS Code官网下载压缩包,解压后运行
code二进制文件,该方式完全依赖系统原生环境。
方法2:让Snap版VS Code调用系统标准库
通过设置环境变量强制VS Code加载系统的libstdc++.so.6:
- 编辑VS Code启动配置文件:
sudo nano /var/lib/snapd/desktop/applications/code_code.desktop - 找到
Exec开头的行,替换为:Exec=env LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 /snap/bin/code --force-user-env %F - 保存退出后重启VS Code,再执行
cargo run即可。
方法3:升级系统标准库(可选)
若系统libstdc++版本本身较低,可尝试升级:
- Ubuntu 20.04及以上版本直接执行:
sudo apt install --only-upgrade libstdc++6 - 旧版Ubuntu需先添加PPA源再升级:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update && sudo apt install libstdc++6
内容的提问来源于stack exchange,提问作者rustafari
相关产品推荐
相关产品推荐

