4

正如在这个线程中提到的以及在这里我正在使用mkbundle -o newfile oldfile.exe --static(操作系统:Ubuntu 11.10 64 位,Mono:2.10.5)创建一个可以在 Apache Web 服务器(操作系统:Debian GNU/Linux 32 位)上执行的文件。在这里,这oldfile.exe是使用mcs oldfile.cs. 在原始系统(使用 Ubuntu)上,该文件是可执行的。但是,每当我调用newfileApache Web 服务器时,我都会收到错误消息:

不能执行二进制文件

另外,当file newfile它说

ELF 64 位 LSB 可执行文件,x86-64,版本 1 (SYSV),动态链接(使用共享库),未剥离

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

...静态链接...

不应该吗?任何人都知道为什么该文件在服务器上不可执行?是不是因为 32bit/64bit 有问题?

4

1 回答 1

7

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

于 2012-02-09T17:40:01.373 回答