2013-03-13 76 views
6

執行任何GCC編譯C程序執行時,我已經從終端編譯gcc任何C程序,我得到一個權限被拒絕的錯誤。拒絕了對OS X(10.8.2)山獅

要開始,我已經驗證了我的驅動器(在此之前,同樣的問題發生了什麼)在修復權限。

爲了說明和隔離問題,我會告訴你這個超簡單的Hello World程序會發生什麼情況(與其他程序,發生同樣的事情):

#include <stdio.h> 

main() 
{ 
    printf("Hello World"); 
} 

現在,我這個保存到我的桌面爲helloworld.c。在這一點上,從桌面上,一個ls -l回報:

total 8 
-rw-r--r-- 1 michael staff 56 Mar 13 14:08 helloworld.c 

然後,我gcc -c helloworld.c -o helloworld編譯(我也試過沒有-o標誌具有相同的結果編譯)。沒有警告或錯誤。一個ls -l現在返回:

total 16 
-rw-r--r-- 1 michael staff 56 Mar 13 14:08 helloworld.c 
-rw-r--r-- 1 michael staff 724 Mar 13 14:16 helloworld.o 

試圖執行的gcc的輸出,具有./helloworld.o回報:

-bash: ./helloworld.o: Permission denied 

只是爲了調試的緣故,如果我使用sudo(sudo ./helloworld.o)執行,則返回:現在

sudo: ./helloworld.o: command not found 

,如果我嘗試設置使用chmod +x helloworld.o可執行的標誌,如被推薦上了很多搜索的r esults我發現,ls -l回報:

total 16 
-rw-r--r-- 1 michael staff 56 Mar 13 14:08 helloworld.c 
-rwxr-xr-x 1 michael staff 724 Mar 13 14:16 helloworld.o 

但是,試圖與./helloworld.o執行現在返回:

-bash: ./helloworld.o: Malformed Mach-o file 

現在,用於調試的緣故,where gcc回報:

/usr/bin/gcc 

所以,你可以看到我沒有使用第三方gcc

有誰知道可能是什麼問題?我嘗試過四處搜尋,但找不到任何工作解決方案。我早些時候遇到過這個問題,並且自從剛剛重新安裝OS X(出於不同的原因),並且仍然存在這樣一個乾淨且有組織的開發環境的問題。作爲參考,我使用的是OS X 10.8.2,並且具有Xcode 4.6以及最新版本的Xcode命令行工具(來自Apple的開發人員網站)。我沒有從Homebrew或任何其他第三方來源安裝gcc;它是Xcode命令行工具附帶的gcc。

非常感謝您的幫助!我非常感謝您花時間閱讀,診斷並提供幫助。 :)

+0

我有這個問題,當我做foobar.c foobar.c有錯誤的地方。當我修復錯誤時,它就起作用了。 – quantumpotato 2014-01-12 00:23:29

回答

10

你試圖執行的目標代碼(helloworld.o),而不是編譯和鏈接的可執行二進制文件。不要使用-c選項。運行此代替:

$ gcc helloworld.c -o helloworld 

它將被創建與可執行權限。然後你可以運行。

$ ./helloworld 

正常。


這樣做的原因是, -c選項告訴編譯器只是 編譯文件,但不 鏈接它。鏈接過程需要創建最終的可執行文件。如果您不提供 -c,gcc將在幕後爲您編譯和鏈接。

+0

這就是它!非常感謝你!只要系統允許,我會將您的回答標記爲答案。 :) – 2013-03-13 21:36:17

+0

@MichaelI:沒問題,這是一個很好的問題! – teppic 2013-03-13 21:41:05