CentOS: 无法执行在 Mac OS X 上编译的二进制文件

CentOS: cannot execute binary file compiled on Mac OS X

我在 C 中创建了一个测试应用程序,如下所示:

#include<stdio.h>
int main(void){
    printf("Hello World!\n");
    return 0;
}

我在我的 MacBook Air 上通过以下命令编译,运行 OS X Yosemite:

$ cc foo.c -o foo

然后我将 "foo" 二进制文件上传到我的 CentOS VPS,CHMOD 755,然后尝试通过以下命令执行:

$ ./foo

这returns结果如下:

-bash: ./foo: cannot execute binary file

我还尝试使用 -m32 进行编译,以防发生 64/32 位冲突。产生了同样的结果。

为什么CentOS不会执行二进制文件?

您在 Mac OS X 上构建了一个可执行文件,并试图在 Linux 上 运行 它。这永远行不通,因为这两个操作系统不兼容。解决此问题的最简单方法是在 Linux 机器上构建您的程序,也许是 运行 在您的 Mac 上运行的虚拟机。一般来说,描述这种情况的短语是"cross compilation."