2016-05-18 104 views
0

我需要幫助創建一個Makefile。Makefile依賴

我的文件:

GC

VH

VC

的main()裏面GC,其中包括VH

我的Makefile文件看起來是這樣的:

all: bin/v bin/g 

bin/v: v.c 
    cc v.c -o bin/v -Wall 

bin/g: g.c 
    cc g.c -o bin/g -D_REENTRANT -lpthread -Wall 

PHONY: all 

當運行使所有,我得到噸的錯誤:

搬遷X具有無效符號指標Y

其次

/usr/lib/gcc/x86_64-linux-gnu/4.8/。 ./../../x86_64-linux-gnu/crt1.o:功能`_start':

(.text + 0x20):未定義對`main'的引用 collect2:錯誤:ld返回1出口狀態

我的Makefile應該是什麼樣子?

在此先感謝!

回答

1

因爲你試圖生成可執行當你正在做

bin/v: v.c 
    cc v.c -o bin/v -Wall 

你需要給標誌-c只編譯,因爲VC不包含任何主要的,這就是爲什麼連接器給錯誤。 通俗地說, 鏈接器&裝載器進入編譯畫面時,然後需要生成可執行文件

+0

謝謝!這解決了其中一個問題,這使我能夠解決我的makefile所具有的其他問題。一切都很好:D – Tirafesi

4

我不知道你爲什麼得到這個鏈接器/加載器錯誤,可能是你沒有提到v.hv.c但這是你的Makefile應該看起來像我曾經使用過一次的示例。

考慮你有一個目錄名稱folder,並且你已經將所有文件main.c , v.h and v.c放在該目錄中。然後在該目錄中按名稱Makefile創建一個文件。 Makefile文件的內容應儘可能遵循

all: main.out 

main.out: main.c v.o 
     gcc -o main.out main.c v.o 

v.o: v.c v.h 
    gcc -c v.c 

clean: 
    rm -rf main.out *.o