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

正如在这个线程中提到的,以及在这里,我正在使用mkbundle -o newfile oldfile.exe --static (OS:Ubuntu 11.10 64bit,Mono:2.10.5)来创build一个文件,该文件应该可以在Apache Web服务器(OS :Debian GNU / Linux 32bit)。 这里, oldfile.exe是使用mcs oldfile.cs编译C#-Hello-World-Code的mcs oldfile.cs 。 在原始系统上(使用Ubuntu)该文件是可执行的。 但是,当我在Apache Web服务器上调用newfile时,出现错误:

不能执行二进制文件

另外,当做file newfile它说

ELF 64位LSB可执行文件,x86-64版本1(SYSV),dynamic链接(使用共享库),不会被删除

我怀疑,如果mkbundle按照预期工作,那么它应该已经阅读

静态链接…

不应该吗? 任何人都知道为什么该文件不能在服务器上执行? 这是32位/ 64位的问题吗?

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