2016-05-31 28 views
0

我是C/C++新手,正在使用下面的make文件運行make hello。我正在使用Ubuntu 14.04 64位操作系統。使用make文件時出錯

hello: main.o factorial.o hello.o 
    gcc main.o factorial.o hello.o -o hello -lstdc++ 
main.o: main.cpp functions.h 
    gcc -c main.cpp 
factorial.o: factorial.cpp functions.h 
    gcc -c factorial.cpp 
hello.o: hello.cpp functions.h 
    gcc -c hello.cpp 

- 在make文件中,我指定了gcc,但是正在使用g ++,如下所示。爲什麼?

- 此外,在g ++命令-c選項丟失,所以下面的錯誤。如何解決這個問題?

[email protected]:~/make$ make hello  
g++  hello.cpp -o hello 
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o: In function `_start': 
(.text+0x20): undefined reference to `main' 
collect2: ld returned 1 exit status 
make: *** [hello] Error 1 
+1

你的makefile是命名爲'makefile'還是'Makefile'?還是你說了別的嗎? – twalberg

+0

謝謝 - 將其更改爲makefile,它工作, –

回答

1

https://www.gnu.org/software/make/manual/html_node/Makefile-Names.html對於如何命名你的makefile

由於twalberg指出,它看起來像提出的,是沒有看到你連在文件頂部的規則。構建未知目標的默認行爲包括查看是否存在帶有目標名稱的.cpp文件,然後在存在該文件的情況下運行g++ target.cpp -o target。所以,make並沒有看到你的規則。要麼你的makefile不存在於你正在調用的目錄中,它被錯誤地命名,你的規則是有條件的,或者你有更高的優先級Makefile在同一個目錄中沒有hello目標。

你的makefile應該被命名爲GNUMakefile,makefile或者Makefile,如果你有兩個,make會選擇第一個。您可以嘗試添加

$(info "Running This Makefile) 

到您的Makefile的頂部以查看它是否被看到。