使用mkbundle从C#源代码创建Linux可执行文件时出现问题

时间:2012-02-09 14:54:08

标签: c# linux mono debian mkbundle

正如本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的问题吗?

1 个答案:

答案 0 :(得分:7)

来自64位Mono的

mkbundle生成64位可执行文件,并且您无法在32位内核上运行64位可执行文件。由于mkbundle没有生成32位二进制文​​件的选项,您显然需要使用32位Mono生成可执行文件(理论上您可以在64位系统上安装32位Mono但这不是很很容易所以我建议在某处安装一个32位系统,也许在虚拟机中安装。)