2014-11-24 174 views
0

嘗試使用gcc在Makefile規則下編譯這些文件。在cygwin上運行gcc/make。GCC:未定義的引用(Makefile問題)

這裏的生成文件:

CC = gcc 
CFLAGS = -g -O2 -Wall -std=c99 
OBJECTS = simulation.o element.o 

simulation.exe : $(OBJECTS) 
    $(CC) $(CFLAGS) -o simulation.exe $(OBJECTS) 

simulation.o : file_priorite.o element.o 
    $(CC) $(CFLAGS) -c simulation.c 

file_priorite.o: file_priorite.h element.o 
    $(CC) $(CFLAGS) -c file_priorite.c 

element.o : element.h 
    $(CC) $(CFLAGS) -c element.c 

clean: 
    rm -f *.o simulation.exe 

遇到這些錯誤:

CLEAN SUCCESSFUL (total time: 52ms) 
gcc -g -O2 -Wall -std=c99 -c element.c 
gcc -g -O2 -Wall -std=c99 -c simulation.c 
gcc -g -O2 -Wall -std=c99 -o simulation.exe simulation.o element.o 
simulation.o: In function `main': 
/cygdrive/d/Dropbox/UQAM AUTOMNE 2014/INF7330/lab10/lab10/simulation.c:11: undefined reference to `construire' 
/cygdrive/d/Dropbox/UQAM AUTOMNE 2014/INF7330/lab10/lab10/simulation.c:11:(.text.startup+0x17): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `construire' 
/cygdrive/d/Dropbox/UQAM AUTOMNE 2014/INF7330/lab10/lab10/simulation.c:20: undefined reference to `ajouter_element' 
/cygdrive/d/Dropbox/UQAM AUTOMNE 2014/INF7330/lab10/lab10/simulation.c:20:(.text.startup+0x69): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `ajouter_element' 
/cygdrive/d/Dropbox/UQAM AUTOMNE 2014/INF7330/lab10/lab10/simulation.c:23: undefined reference to `consommer_element' 
/cygdrive/d/Dropbox/UQAM AUTOMNE 2014/INF7330/lab10/lab10/simulation.c:23:(.text.startup+0x76): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `consommer_element' 
/cygdrive/d/Dropbox/UQAM AUTOMNE 2014/INF7330/lab10/lab10/simulation.c:23: undefined reference to `consommer_element' 
/cygdrive/d/Dropbox/UQAM AUTOMNE 2014/INF7330/lab10/lab10/simulation.c:23:(.text.startup+0x86): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `consommer_element' 
/cygdrive/d/Dropbox/UQAM AUTOMNE 2014/INF7330/lab10/lab10/simulation.c:25: undefined reference to `obtenir_taille' 
/cygdrive/d/Dropbox/UQAM AUTOMNE 2014/INF7330/lab10/lab10/simulation.c:25:(.text.startup+0x96): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `obtenir_taille' 
collect2: error: ld returned 1 exit status 
Makefile:6: recipe for target 'simulation.exe' failed 
make: *** [simulation.exe] Error 1 

有問題的功能在file_priorite.c全部實現。

有什麼想法?

+2

你沒有鏈接到file_priorite.o(並且它沒有被創建,因爲你沒有把它放在OBJECTS中) – 2014-11-24 17:35:56

+0

擴展@ remyabel的評論。查看你在文件中列出'element.o'的地方以及列出'file_priorite.o'的地方。 – 2014-11-24 17:37:00

回答

1

請注意,您構建的日誌不包括以任何形式file_priorite - 這意味着你沒有建立/鏈接反對。將file_priorite.o添加到您的OBJECTS系列。

+0

我知道這真的很愚蠢。人爲錯誤,woops。謝謝,我會盡快接受你的回答。 – slaughterize 2014-11-24 17:37:49

2

你需要有

OBJECTS = simulation.o element.o file_priorite.o