GLIBC_2.2.5 未在文件 libpthread.so.0 中定义,带有链接时间参考

问题描述

我正在创建一个我已经构建的 C# 应用程序,或者按照 csproj 中的此 XML 为 linux-x64“发布”:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <Configuration>release</Configuration>
    <InvariantGlobalization>true</InvariantGlobalization>
    <TargetFramework>net5.0</TargetFramework>
    <PublishSingleFile>true</PublishSingleFile>
    <SelfContained>true</SelfContained>
    <RuntimeIdentifier>linux-x64</RuntimeIdentifier>
    <PublishTrimmed>true</PublishTrimmed>
    <PublishReadyToRun>true</PublishReadyToRun>
  </PropertyGroup>

  <ItemGroup>
    <packagereference Include="mongocsharpdriver" Version="2.11.6" />
    <packagereference Include="MongoDB.Bson" Version="2.11.6" />
    <packagereference Include="MongoDB.Driver" Version="2.11.6" />
    <packagereference Include="MongoDB.Driver.Core" Version="2.11.6" />
    <packagereference Include="PCSC" Version="5.0.0" />
    <packagereference Include="PCSC.Iso7816" Version="5.0.0" />
  </ItemGroup>

</Project>

我使用的是 Linux Ubuntu 20.04。

我使用 CLI 将应用程序发布到文件夹 bin/release 等。当我测试它时,它运行得很好。现在,对于主分支,我删除了所有代码。将目录 release 上移到主目录,并推送到 GIT。

每当您现在尝试运行它时,都会出现以下错误

./Appname: relocation error: ./Appname: symbol pthread_attr_init version GLIBC_2.2.5 not defined in file libpthread.so.0 with link time reference

由于我不是本地 C# 开发人员并且仍在学习,我完全不知道这是关于什么的,除了它显然与我移动目录有关(我问?)

有谁知道这个错误是什么或它来自哪里,如何修复它,以及如何防止将来发生?因为我希望能够发布没有错误的应用程序。

解决

我找到了答案。构建目录中有另一个名为“publish”的目录,其中包含工作可执行文件。换句话说。 exe 位于文件release/net5.0/linux-x64/publish 而不是 release/net5.0/linux-x64 中。当我从该目录运行可执行文件时,一切正常。对于其他新手:它位于文件release 中,因为我的 XML 项目文件Configuration field 设置为 release认情况下,它位于文件Debug 中。

i'm an idiot

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...