You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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包或官网压缩包安装:

  1. 卸载现有Snap版VS Code:
    sudo snap remove code
    
  2. 安装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
      
  3. 也可直接从VS Code官网下载压缩包,解压后运行code二进制文件,该方式完全依赖系统原生环境。

方法2:让Snap版VS Code调用系统标准库

通过设置环境变量强制VS Code加载系统的libstdc++.so.6:

  1. 编辑VS Code启动配置文件:
    sudo nano /var/lib/snapd/desktop/applications/code_code.desktop
    
  2. 找到Exec开头的行,替换为:
    Exec=env LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 /snap/bin/code --force-user-env %F
    
  3. 保存退出后重启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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 14:17:36