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

Ubuntu 22.04终端运行.NET应用遇重定位错误求助

解决Ubuntu 22.04中Snap版.NET SDK 3.1运行时的GLIBC版本错误

错误信息

my-pc:~/git$ dotnet run --project test/src/test.api 
/home/mir/git/test/build/test.api/test.api: relocation error: 
/home/mir/git/test/build/test.api/test.api: symbol __pthread_key_create version 
GLIBC_2.2.5 not defined in file libpthread.so.0 with link time reference

问题原因

Ubuntu 22.04预装的GLIBC版本为2.35,而Snap版.NET SDK 3.1的隔离环境未正确适配系统的高版本GLIBC,导致运行时无法找到旧版本符号定义,触发 relocation 错误。

解决方案

  • 改用官方APT源安装.NET SDK 3.1(推荐)

    1. 移除Snap版.NET:
      sudo snap remove dotnet-sdk
      
    2. 添加微软官方APT源:
      wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
      sudo dpkg -i packages-microsoft-prod.deb
      rm packages-microsoft-prod.deb
      
    3. 安装.NET SDK 3.1:
      sudo apt update && sudo apt install dotnet-sdk-3.1
      
    4. 验证安装并重新运行项目:
      dotnet --version
      dotnet run --project test/src/test.api
      
  • 临时环境变量 workaround
    如果暂时无法切换安装方式,可通过设置LD_PRELOAD强制使用系统兼容的pthread库:

    LD_PRELOAD=/lib/x86_64-linux-gnu/libpthread.so.0 dotnet run --project test/src/test.api
    

    注意:此方法仅作临时应急,可能引发其他兼容性问题,不建议长期使用。

  • 检查项目目标框架配置
    打开项目的.csproj文件,确认目标框架设置为netcoreapp3.1:

    <TargetFramework>netcoreapp3.1</TargetFramework>
    

    避免误设置为更高版本导致的编译/运行兼容问题。

内容的提问来源于stack exchange,提问作者Mehran Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:10:29