2016-09-29 60 views
0

二進制文件我用C創建了一個測試程序如下:CentOS的:不能執行編輯在Mac OS X

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

我通過我的MacBook Air以下命令編譯,運行OS X的優勝美地:

$ cc foo.c -o foo 

我再上傳 「foo」 的二元對我的CentOS VPS,CHMOD 755,然後嘗試通過以下命令來執行:

$ ./foo 

這將返回以下結果:

-bash: ./foo: cannot execute binary file 

我也試圖在用的情況下-m32編譯它是一個64/32位衝突。產生了相同的結果。

爲什麼CentOS不會執行二進制文件?

+0

'foo'是否具有執行權限? – Raptor

+0

@Raptor是的,正如我所說的權限設置爲755. – nicktendo

+0

您建立了什麼機器? –

回答

4

您在Mac OS X上構建了一個可執行文件,並試圖在Linux上運行它。這將無法工作,因爲這兩個操作系統不兼容。解決這個問題的最簡單方法是在Linux機器上構建你的程序,也許是在你的Mac上運行的虛擬機。一般來說,描述這種情況的短語是「交叉彙編」。

+0

問題恰恰是這個問題。我的印象是,只要我用g ++編譯它就可以與Linux兼容? – nicktendo

+3

@nicktendo:GCC在許多平臺上都有,但它通常會爲其製作的平臺生成可執行文件。這些例外被稱爲「交叉編譯」,並不典型。 –