因此,我有一个包含几个文件的子目录,需要与其链接。在.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中的头文件,这很好,因为它为编译器声明了头文件,但是还应该有一些源文件需要编译然后链接。这些源文件应定义头文件引用的lexnewLexer函数。

关于c - 包含gcc的目录未正确链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18863527/

10-09 08:59