正如本thread以及here中所述,我使用mkbundle -o newfile oldfile.exe --static
(操作系统:Ubuntu 11.10 64位,单声道:2.10.5)创建一个可执行的文件Apache Web服务器(操作系统:Debian GNU / Linux 32位)。这里,oldfile.exe
是使用mcs oldfile.cs
编译C#-Hello-World-Code的结果。在原始系统(使用Ubuntu)上,该文件是可执行的。但是,当我在Apache Web服务器上调用newfile
时,我收到错误:
无法执行二进制文件
此外,在执行file newfile
时,它会说
ELF 64位LSB可执行文件,x86-64,版本1(SYSV),动态链接(使用共享库),未剥离
我怀疑mkbundle是否按预期工作,那么它应该已经阅读
不应该吗?任何人都知道为什么文件在服务器上不可执行?这是因为32bit / 64bit的问题吗?...静态链接......
答案 0 :(得分:7)
mkbundle
生成64位可执行文件,并且您无法在32位内核上运行64位可执行文件。由于mkbundle
没有生成32位二进制文件的选项,您显然需要使用32位Mono生成可执行文件(理论上您可以在64位系统上安装32位Mono但这不是很很容易所以我建议在某处安装一个32位系统,也许在虚拟机中安装。)