【发布时间】:2012-03-02 01:20:08
【问题描述】:
正如thread 和here 中提到的,我正在使用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 按预期工作,那么它应该已经读取
...静态链接...
不应该吗?任何人都知道为什么该文件在服务器上不可执行?是不是因为32bit/64bit的问题?
【问题讨论】:
-
我使用
./newfile或sh newfile使用 PHP 调用应用程序。我已经使用三个 PHP 命令exec/passthru/system尝试了这两个选项。每次发生相同的错误cannot execute binary file时(我在 apache-error-log 中读取错误)。 -
你能显示
file newfile吗?你的服务器系统是 32 位的吗? -
好主意。服务器上
file newfile的输出是ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), not stripped。至于服务器系统,我必须确定它是 32 位还是 64 位,然后会返回该信息。当我在构建机器(Ubuntu)上使用相同的命令时,它会给出相同的加号for GNU/Linux 2.6.15。也许,mkbundle 没有做我想做的事,即没有将所有链接的库包含在一个文件中?! -
根据this link,服务器有一个 32 位内核,而我在 64 位内核上使用 mkbundle-command。这可能是问题吗?我相应地编辑了问题。
标签: c# linux mono debian mkbundle