在x86上使用Mono mkbundle进行构建不会在x64上运行

时间:2014-04-04 13:51:02

标签: linux mono 64-bit 32-bit mkbundle

我有一个使用Mono在Linux上运行的.NET应用程序。我想避免用户必须安装Mono,因此使用mkbundle。我在x86机器上运行mkbundle,期望生成的二进制文件能够在x64机器上运行:

mkbundle MyApp.exe *.dll -o MyApp

然后我可以使用`.MyApp'

在构建计算机上运行生成的应用程序

然而,当我将它复制到x64机器(并使其可执行)时,它将无法运行,只输出:

bash: ./MyApp: No such file or directory

如果我尝试ldd,我会:

not a dynamic executable

不应该为x86构建的二进制文件在x64系统上运行吗?

1 个答案:

答案 0 :(得分:0)

我对Linux很陌生,似乎x86 / x64并不像在Windows上那么简单,因为很多x64 Linux发行版都不具备运行功能32比特二进制文件。

在x64机器上安装32位库后,x86代码将按预期执行(例如,在Ubuntu 7.04上,apt-get install ia32-libs

虽然这有效,但由于我需要定位一些发行版,我决定只为x86和x64创建单独的版本。