2013-01-24 21 views
0

這是一個n00b問題,我見過一個答案不幫我。語法錯誤在主要簡單的c程序osx使用make

我正在寫在TextMate的一個簡單的C程序(firsty.c):

#include <stdio.h> 

int main() 
{ 
    printf("hi world.\n"); 
    return 0; 
} 

我輸入以下內容,結果如下終端:

$ make firsty.c 
make: Nothing to be done for `firsty.c'. 
$ ./firsty.c 
./firsty.c: line 3: syntax error near unexpected token `(' 
./firsty.c: line 3: `int main()' 

可能一些簡單的,但我不明白什麼是錯的。

+0

嘗試使用int main(int argc,char * argv [])作爲主要原型。 – Jay

回答

0

make firsty.c根本沒有做任何事情。請嘗試改爲make firsty,然後嘗試./firsty

+0

這個作品!我知道這是愚蠢的!謝謝。 – dwstein

0

您正在嘗試執行源文件。您需要執行希望通過make構建的二進制文件。

我不知道你的makefile在做什麼,但是如果它是類似於gcc firsty.c的二進制輸出文件,默認情況下將被命名爲a.out。使用gcc -o executable_name_here命名爲不同的輸出文件(http://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html#Overall-Options)

Unix(此時的osx)正在考慮可執行文件的腳本並嘗試執行它。另一件事是從源文件中刪除可執行權限,然後你將無法運行它。

+0

但是,爲什麼有人在嘗試執行源文件時出現語法錯誤? – Jay

+0

新文件a.out?如果是這樣,這是一個OSX的東西? – dwstein

+0

@dwstein - 更新了我的回答 – Drakosha

0

我覺得你還沒有創建它使用make命令編譯給定的源文件(S)任何的Makefile ...所以要儘量寫一個makefile(http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/)其他嘗試爲編譯...

gcc firsty.c -o firstly 

然後日子會把你得在同一目錄&可執行文件u能執行它

./firstly 
0

照顧「#」的。當你執行源代碼文件時,操作系統可能會使用shell執行它。所以我們得到語法錯誤。

0

試試make firsty,它會起作用,並且會首先製作一個帶有名字的可執行文件。

如果此操作無效,請嘗試make ./firstly。

0

請注意,雖然做這樣做,你只需提供文件的名稱,而不是擴展名爲.c 輸出文件創建與文件的名稱,它會搜索相應的.c文件以編譯。 在你的情況

make firsty 

這將尋找firsty.c被編譯並創建名firsty的輸出文件。