我有一个使用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系统上运行吗?
答案 0 :(得分:0)
我对Linux很陌生,似乎x86 / x64并不像在Windows上那么简单,因为很多x64 Linux发行版都不具备运行功能32比特二进制文件。
在x64机器上安装32位库后,x86代码将按预期执行(例如,在Ubuntu 7.04上,apt-get install ia32-libs
。
虽然这有效,但由于我需要定位一些发行版,我决定只为x86和x64创建单独的版本。