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."
我在 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."