Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 由mkbundle生成的程序(来自C程序)可以在Ubuntu上运行,但不能';我不在红帽子上工作_C#_Linux_Mono_Redhat_Glibc - Fatal编程技术网

C# 由mkbundle生成的程序(来自C程序)可以在Ubuntu上运行,但不能';我不在红帽子上工作

C# 由mkbundle生成的程序(来自C程序)可以在Ubuntu上运行,但不能';我不在红帽子上工作,c#,linux,mono,redhat,glibc,C#,Linux,Mono,Redhat,Glibc,我在Windows7上的Visual C#2010 Express上编写了一个64位程序。经过一番努力,我终于在我的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”返回“Cent

我在Windows7上的Visual C#2010 Express上编写了一个64位程序。经过一番努力,我终于在我的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 5.7版(最终版)”。我已经访问了他的服务器,并上传了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系统知之甚少。我假设我需要下载上述库,但我有以下问题:

  • 如果我下载这些库,它会以任何方式损害服务器吗?我不想伤害客户端的服务器
  • 为什么一个“mkbundle”的程序需要额外的库?我在mkbundle中使用了“-static”,输出是5.7MB的文件,所以我认为里面已经有了所有必要的库
  • 还有别的办法解决这个问题吗


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

    < P>一般来说,对于一个不同的Linux发行版来说,产生一个二进制是一个痛苦和困难的尝试,尤其是如果你对Linux不太了解的话。问题是发行版(甚至同一发行版的不同版本)之间的二进制兼容性很少


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

    我建议您花点时间学习Linux。阅读足够好的书籍,解释什么是libc。所以才是真正的目的。我当然会:)不幸的是,我需要很快完成这个项目。让你的程序免费和开源,并将其打包留给发行版。你的意思是,我可以把代码带到服务器并在那里编译吗?但是他的服务器上没有mono,我如何编译C#代码?这是一个难题,您需要首先将mono安装到服务器上(或者创建自己的CentOS虚拟机,您可以在不更改客户端机器上任何内容的情况下自己完成)。