“架构x86_64的未定义符号:”编译lex和yacc时

问题描述:

Lex和Yacc可以工作,但是当我尝试编译y.tab.c文件时,出现以下错误。我感觉它是一个链接问题,编译器无法找到它需要的库,但我不知道如何解决它。“架构x86_64的未定义符号:”编译lex和yacc时

在我nor.y文件,我有这样的顶部:

%{ 
#include <stdio.h> 
%} 

在我nor.l文件,我有这样的顶部:

%{ 
#include "y.tab.h" 
#include <stdlib.h> 
extern YYSTYPE yylval; 
%} 

然后,当我尝试用

gcc y.tab.h -ly -ll 

我得到的错误编译:

Undefined symbols for architecture x86_64: 
    "_yyparse", referenced from: 
    _main in liby.a(main.o) 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 
+1

这也许应该是'GCC y.tab.c的-ly -ll'不'GCC y.tab.h -ly -ll'。 – 2013-03-04 22:07:27

您需要编译.c文件,而不是头文件:

gcc y.tab.c lex.yy.c -ly -ll