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

发布于 2025-01-03 15:55:17 字数 900 浏览 1 评论 0原文

正如在此线程以及此处我正在使用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怼怹恏 2025-01-10 15:55:17

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. As mkbundle 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).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文