2014-10-16 289 views
6

我最近買了一臺Macbook Pro,我想用C語言編寫終端代碼。如何在Mac OS X上使用make編譯C程序終端

我可以用這個命令來編譯代碼:

gcc filename.c –o filename 

但我想用make命令來編譯它,因爲我知道這是最好的做法,我想遵循最佳實踐經驗。

make filename cc filename.c -o filename 

該命令是給我下面的輸出:

make: Nothing to be done for `ex01'. 
make: *** No rule to make target `cc'. Stop. 

請注意,我已經安裝了Xcode和Xcode開發的命令行工具 ,文件夾中的/ usr/bin中我看到使makefile屬性。

沒有人有我應該怎樣做能夠與makefile文件和CC參數編譯任何提示?

回答

11

與此內容相同的路徑上創建一個名爲Makefile文件:

CC = cc 
CFLAGS = -std=c99 -pedantic -Wall 
OBJECTS = filename.o 

all: appname 

filename.o: filename.c 
    $(CC) $(CFLAGS) -c filename.c 

appname: $(OBJECTS) 
    $(CC) $(OBJECTS) -o appname 

clean: 
    rm -f *.o appname 

然後運行:

make 

當然,你的程序

註名替換appname :在

之前必須有一個「製表符」(不是空格)

$(CC) $(OBJECTS) -o appname 
+0

謝謝Alter Mann解決了我的問題,我很樂意欣賞終端中的編碼。即使解決了問題,也是另一個問題,你知道爲什麼這樣做不起作用.make filename cc filename.c -o filename是它只是不支持在MacOs上,或者是一些配置問題,或者它只是沒有辦法做到這一點? – 2014-10-16 18:24:01

+1

@bigpop在任何系統上,任何地方都不支持該命令行語法。不知道你從哪裏得到它,但無論你做了什麼,你都應該避免將它作爲未來的參考。另外,我不明白答案中的陳述_ [在變量賦值之前必須有一個空行]:沒有我知道的要求。 – MadScientist 2014-10-17 00:10:53

+0

@MadScientist,哎呀,你是對的,沒有必要把一個空行,編輯感謝 – 2014-10-17 06:09:33

5

我遵循同樣tutorial,並遇到了類似的問題。

我不知道你到底做了什麼,但我認爲錯誤是運行錯誤的命令。您輸入了make filename cc filename.c -o filename,但本教程指示我們使用make filename,而不包含cc filename.c -o filename部分。也許你讀過一箇舊版本?

而且,make filename做工精細,You don't need a Makefile


僅供參考,以下是我遇到了這個問題,我如何解決它:

  1. 鍵入下面的代碼,並在名爲「EX1」

    int main(int argc, char *argv[]) 
    { 
        puts("Hello world."); 
    
        return 0; 
    } 
    
  2. 文件保存它
  3. 輸入make ex1終端號碼
  4. 得到錯誤信息make: Nothing to be done for 'ex1'.

如您所見,我的錯誤是源代碼的文件名應爲ex1.c,而不是ex1

而當我將文件名更改爲ex1.c,並執行make ex1時,它工作。

相關問題