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

时间:2013-03-04 22:05:38

标签: gcc bison yacc lex

Lex和Yacc工作,但是当我尝试编译y.tab.c文件时,我收到以下错误。我感觉它是一个链接问题,编译器无法找到它需要的库,但我不知道如何修复它。

在我的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 个答案:

答案 0 :(得分:1)

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

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