包含gcc的目录未正确链接

时间:2013-09-18 03:50:54

标签: c header makefile

所以我有一个包含多个文件的子目录,需要与之链接。在.c文件中我有一个看起来有点像的包含:

#include "subdirectory/header.h"

此头文件包含我正在使用的lex()等函数以及编译时的输出:

 cc -IlexicalAnalyzer -Wall   -c -o parser.o parser.c
 cc -IlexicalAnalyzer -Wall   -c -o recognizer.o recognizer.c
 g++      -IlexicalAnalyzer -Wall parser.o recognizer.o  -o recognizer
 parser.o: In function `advance':
 parser.c:(.text+0x36): undefined reference to `lex'
 recognizer.o: In function `recognizer':
 recognizer.c:(.text+0xd): undefined reference to `newLexer'
 collect2: error: ld returned 1 exit status
 make: *** [recognizer] Error 1

我做错了什么?

1 个答案:

答案 0 :(得分:1)

你已经包含了来自subdirectory的头文件,这很好,因为它为编译器声明了它们,但是那里还应该有一些你需要编译然后链接的源文件。这些源文件应定义头文件引用的lexnewLexer函数。