所以我有一个包含多个文件的子目录,需要与之链接。在.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
我做错了什么?
答案 0 :(得分:1)
你已经包含了来自subdirectory
的头文件,这很好,因为它为编译器声明了它们,但是那里还应该有一些你需要编译然后链接的源文件。这些源文件应定义头文件引用的lex
和newLexer
函数。