gpt4 book ai didi

c# - mkbundle 生成的程序(来自 C# 程序)在 Ubuntu 上运行,但在 Redhat 上不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:41 25 4
gpt4 key购买 nike

我在 64 位 Windows 7 上用 Visual C# 2010 Express 写了一个程序。经过一番努力,我设法让它在我的 Ubuntu 虚拟机(32 位)下工作(在 MonoDevelop 中重新编译并使用 mkbundle)。客户告诉我他有以下版本:“Linux 版本 2.6.18-274.el5.028stab093.2 (root@rhel5-build-x64) (gcc 版本 4.1.2 20080704 (Red Hat 4.1.2-46)) ”。命令“cat/etc/redhat-release”返回“CentOS release 5.7 (Final)”。我已经访问了他的服务器,并上传了 mkbundle 的输出(在 Ubuntu 下工作正常)。程序返回以下错误:

$ ./ProgName img.jpg
./ProgName: /lib/libc.so.6: version `GLIBC_2.9' not found (required by ./ProgName)
./ProgName: /lib/libc.so.6: version `GLIBC_2.11' not found (required by ./ProgName)
./ProgName: /lib/libc.so.6: version `GLIBC_2.8' not found (required by ./ProgName)

我该如何解决这个问题?我对 Linux 系统知之甚少。我假设我需要下载上面给出的库,但我有以下问题:

  1. 如果我下载这些库,它会以任何方式损害服务器吗?我不想损害客户的服务器。
  2. 为什么“mkbundled”的程序需要任何额外的库?我在 mkbundle 中使用了“--static”,输出是 5.7 MB 的文件,所以我认为它已经包含了所有必需的库。

还有其他方法可以解决这个问题吗?

编辑:我想,也许如果我设法在客户端的服务器上编译项目,它会工作,但我找不到这个版本的 Linux 的单声道。有没有办法在那个系统上安装单声道?如果没有,那么我还有什么其他选择?在最坏的情况下,我正在考虑用 C++ 重写我的程序。

最佳答案

一般来说,为不同的 Linux 发行版生成一个二进制文件是一项痛苦而艰巨的工作,特别是如果您对 Linux 了解不多的话。问题是发行版(甚至同一发行版的不同版本)之间的二进制兼容性很少。

我的建议是分发托管程序集(即不通过 mkbundle 运行程序),但我意识到您可能有充分的理由不这样做。另一种选择是在与您的客户相似的系统上运行 mkbundle,并将该版本发送给他。

关于c# - mkbundle 生成的程序(来自 C# 程序)在 Ubuntu 上运行,但在 Redhat 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8746691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com