2014-11-24 55 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 
相关问题