C# 由mkbundle生成的程序(来自C程序)可以在Ubuntu上运行,但不能';我不在红帽子上工作
我在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下运行良好)。程序返回了以下错误: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
$ ./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系统知之甚少。我假设我需要下载上述库,但我有以下问题:
编辑:我想,如果我能在客户机的服务器上编译这个项目,它可能会工作,但我找不到适用于这个版本Linux的mono。有没有办法在那个系统上安装mono?如果没有,那么我还有什么其他选择?在最坏的情况下,我正在考虑改写我的C++程序。< P>一般来说,对于一个不同的Linux发行版来说,产生一个二进制是一个痛苦和困难的尝试,尤其是如果你对Linux不太了解的话。问题是发行版(甚至同一发行版的不同版本)之间的二进制兼容性很少
我的建议是分发托管程序集(即不通过mkbundle运行程序),但我意识到您不这样做可能有很好的理由。另一种选择是在与客户类似的系统上运行mkbundle,并将该版本发送给客户。我建议您花点时间学习Linux。阅读足够好的书籍,解释什么是libc。所以才是真正的目的。我当然会:)不幸的是,我需要很快完成这个项目。让你的程序免费和开源,并将其打包留给发行版。你的意思是,我可以把代码带到服务器并在那里编译吗?但是他的服务器上没有mono,我如何编译C#代码?这是一个难题,您需要首先将mono安装到服务器上(或者创建自己的CentOS虚拟机,您可以在不更改客户端机器上任何内容的情况下自己完成)。