如此线程和这里所述,我正在使用
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代码的结果。在原始系统(Ubuntu)上,该文件是可执行的。然而,每当我在Apache Web服务器上调用newfile
时,我会收到以下错误:
无法执行二进制文件
同样,在执行 file newfile
时,它指出
ELF 64位LSB可执行文件,x86-64,版本1(SYSV),动态链接(使用共享库),未剥离
我怀疑如果mkbundle按预期工作,那么它应该读取
...静态链接...
不是吗?有人知道为什么服务器上的文件无法执行吗?是因为32位/64位的问题吗?
./newfile
或sh newfile
通过PHP调用应用程序。我已经尝试了这两个选项,并使用了三个PHP命令exec/passthru/system
。每次都会出现相同的错误无法执行二进制文件
(我在apache错误日志中读取错误信息)。 - tyrexfile newfile
吗?你的服务器系统是32位的吗? - wRARfile newfile
的输出是ELF 64-bit LSB 可执行文件,x86-64,版本 1 (SYSV),动态链接 (使用共享库),未剥离
。至于服务器系统,我需要找出它是 32 位还是 64 位,并将信息反馈给您。当我在构建机器 (Ubuntu) 上使用相同的命令时,它会给出相同的输出,加上for GNU/Linux 2.6.15
。也许 mkbundle 没有按照我的要求完成工作,即没有将所有链接库包含到一个文件中?! - tyrex