Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CentOS:无法执行Mac OS X上编译的二进制文件_C_Linux_Binary_Centos_Vps - Fatal编程技术网

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

CentOS:无法执行Mac OS X上编译的二进制文件,c,linux,binary,centos,vps,C,Linux,Binary,Centos,Vps,我在C中创建了一个测试应用程序,如下所示: #include<stdio.h> int main(void){ printf("Hello World!\n"); return 0; } 然后,我将“foo”二进制文件上载到我的CentOS VPS CHMOD 755,然后尝试通过以下命令执行: $ ./foo 这将返回以下结果: -bash: ./foo: cannot execute binary file 我还尝试使用-m32进行编译,以防64/32位冲突

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

#include<stdio.h>
int main(void){
    printf("Hello World!\n");
    return 0;
}
然后,我将“foo”二进制文件上载到我的CentOS VPS CHMOD 755,然后尝试通过以下命令执行:

$ ./foo
这将返回以下结果:

-bash: ./foo: cannot execute binary file
我还尝试使用-m32进行编译,以防64/32位冲突。产生了同样的结果


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

您在Mac OS X上构建了一个可执行文件,并尝试在Linux上运行它。这永远不会起作用,因为这两个操作系统不兼容。解决这个问题的最简单方法是在Linux机器上构建程序,也许是在Mac上运行的虚拟机。一般来说,描述这种情况的短语是“交叉编译”。

您在Mac OS X上构建了一个可执行文件,并尝试在Linux上运行它。这永远不会起作用,因为这两个操作系统不兼容。解决这个问题的最简单方法是在Linux机器上构建程序,也许是在Mac上运行的虚拟机。一般来说,描述这种情况的短语是“交叉编译”。

foo是否具有执行权限?@Raptor是的,正如我所说的,权限设置为755。您是在哪台机器上构建的?@JohnZwinck My MacBook Air,正在运行OS X Yosemite。尝试执行
文件foo
以查看输出是什么
foo
是否具有执行权限?@Raptor是的,正如我所说的权限设置为755。您是在哪台机器上构建的?@JohnZwinck My MacBook Air,正在运行OS X Yosemite。请尝试执行
文件foo
,以查看输出结果和问题。我的印象是,只要我使用g++进行编译,它就会与Linux兼容?@nicktendo:不。GCC存在于许多平台上,但它通常会为它所针对的平台构建可执行文件。这些异常被称为“交叉编译”,并不典型。我的印象是,只要我使用g++进行编译,它就会与Linux兼容?@nicktendo:不。GCC存在于许多平台上,但它通常会为它所针对的平台构建可执行文件。这些异常称为“交叉编译”,并不典型。
-bash: ./foo: cannot execute binary file