因此,我有一个包含几个文件的子目录,需要与其链接。在.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
我究竟做错了什么?
最佳答案
您包括了subdirectory
中的头文件,这很好,因为它为编译器声明了头文件,但是还应该有一些源文件需要编译然后链接。这些源文件应定义头文件引用的lex
和newLexer
函数。
关于c - 包含gcc的目录未正确链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18863527/