我在Windows 7,64位上编写了一个关于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版本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系统知之甚少。我假设我需要下载上面给出的库,但我有以下问题:
还有其他方法可以解决这个问题吗?
编辑:我想,也许如果我设法在客户端的服务器上编译项目,它可以工作,但我找不到这个版本的Linux的单声道。有没有办法在该系统上安装mono?如果没有,那么我还有其他选择吗?在最糟糕的情况下,我正在考虑用C ++重写我的程序。答案 0 :(得分:1)
一般来说,为不同的Linux发行版制作一个二进制文件是一项痛苦而艰巨的工作,特别是如果你对linux不太了解的话。问题是发行版(甚至是同一发行版的不同版本)之间的二进制兼容性很少见。
我的建议是分发托管程序集(即不通过mkbundle运行程序),但我发现可能有充分的理由你没有这样做。另一种选择是在类似于客户端的系统上运行mkbundle,并将该版本发送给他。