我在C中创建了一个测试应用程序,如下所示:
#include<stdio.h>
int main(void){
printf("Hello World!\n");
return 0;
}
我在MacBook Air上通过以下命令编译,运行OS X Yosemite:
$ cc foo.c -o foo
然后我上传&#34; foo&#34;二进制到我的CentOS VPS,CHMOD 755,然后尝试通过以下命令执行:
$ ./foo
返回以下结果:
-bash: ./foo: cannot execute binary file
我还尝试使用-m32进行编译,以防它是64/32位冲突。产生了同样的结果。
为什么CentOS不会执行二进制文件?
答案 0 :(得分:4)
您在Mac OS X上构建了一个可执行文件,并尝试在Linux上运行它。这将永远不会起作用,因为这两个操作系统不兼容。解决这个问题的最简单方法是在Linux机器上构建程序,也许是在Mac上运行的虚拟机。一般来说,描述这种情况的短语是“交叉编译”。