使用 mkbundle 从 C# 源代码创建 Linux 可执行文件时出现问题
正如在此线程以及此处我正在使用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
编译 C#-Hello-World-Code 的结果。在原始系统(Ubuntu)上该文件是可执行的。但是,每当我在 Apache Web 服务器上调用 newfile
时,都会收到错误:
无法执行二进制文件
另外,在执行 file newfile
时,它说
ELF 64 位 LSB 可执行文件,x86-64,版本 1 (SYSV),动态链接(使用共享库),未剥离
我怀疑 mkbundle 是否按预期工作,那么它应该已读取
...静态链接...
不应该吗?有人知道为什么该文件在服务器上无法执行吗?是因为32位/64位的问题吗?
As mentioned in this thread as well as here I am using mkbundle -o newfile oldfile.exe --static
(OS: Ubuntu 11.10 64bit, Mono: 2.10.5) to create a file which shall be executable on an Apache Web Server (OS: Debian GNU/Linux 32bit). Here, the oldfile.exe
was the result of the compilation of a C#-Hello-World-Code using mcs oldfile.cs
. On the original system (with Ubuntu) the file is executable. However, whenver I call newfile
on the Apache Web Server I get the error:
cannot execute binary file
Also, when doing file newfile
it says
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
I suspect if mkbundle worked as it is supposed to, then it should have read
... statically linked ...
shouldn't it? Anyone an idea why the file is not executable on the Server? Is it a problem because of 32bit/64bit?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
64 位 Mono 的
mkbundle
生成 64 位可执行文件,并且您无法在 32 位内核上运行 64 位可执行文件。由于 mkbundle 没有生成 32 位二进制文件的选项,因此您显然需要使用 32 位 Mono 生成可执行文件(理论上您可以在 64 位系统上安装 32 位 Mono,但不是很容易,所以我建议在某个地方安装 32 位系统,也许在 VM 中)。mkbundle
from 64-bit Mono generates 64-bit executables and you cannot run a 64-bit executable on 32-bit kernel. Asmkbundle
doesn't have an option to generate 32-bit binaries you apparently need to generate your executable with 32-bit Mono (theoretically you can install 32-bit Mono on your 64-bit system but that is not very easy so I suggest installing a 32-bit system somewhere, maybe in VM).