2012-04-21 87 views
0

我目前正在使用flex和bison编译一个简单的编译器。 文件夹结构: MainFolder - >的src - >编译器,其具有以下文件 add_inp.flex,bison.y main.c中和stack.c 基本上当我单独运行他们编译细,并产生下列文件 柔性生产的lex.yy.c和野牛产生add_inp.tab.c & add_inp.tab.h下面是我gnumake的文件GNUmakefile无法编译bison和flex程序

 lex.yy.c: src/dplc/add_inp.flex bison.tab.c src/dplc/bison.tab.h 
      flex src/dplc/add_inp.flex 

    bison.tab.c: src/dplc/bison.y 
      bison -d -t src/dplc/bison.y 

    a.exe: src/dplc/main.c lex.yy.c bison.tab.c 
      gcc src/dplc/main.c 


    clean: 
     rm src/dplc/bison.tab.c src/dplc/bison.tab.h src/dplc/lex.yy.c src/dplc/a.exe 

我得到这个错误

make: *** No rule to make target `src/dplc/bison.y', needed by `bison.tab.c'. Stop. 

如果我没有编译弯曲和野牛公关ograms独立:

make: *** No rule to make target `src/dplc/bison.y', needed by `bison.tab.c'. Stop. 

我感谢有这方面的帮助,此外,我需要做的建立以及对这些程序随着Java编写的执行人运行有人可以请给一些suggeston对我怎么能弄完?

+1

从您尝试运行'make'的目录是否存在'src/dplc/bison.y'? – 2012-04-21 19:55:27

+1

错误信息告诉你'make'找不到'src/dplc/bison.y',这是创建'bison.tab.c'所需要的' – 2012-04-22 02:14:54

回答

0

你告诉make有关文件src/dplc/bison.y,但你要求你的目录结构MainFolder --> src --> Compiler。那不应该是src/Compiler/bison.y

1

这是我得到它的工作,感谢所有人的帮助。

CC=gcc 
    IDIR =src/dplc/ 
    CFLAGS=-I$(IDIR) 
    a.exe: src/dplc/main.c lex.yy.c bison.tab.c 
$(CC) src/dplc/main.c $(CFLAGS) -I. 
    bison.tab.c: src/dplc/bison.y 
bison -d -t src/dplc/bison.y 
    lex.yy.c: src/dplc/add_inp.flex bison.tab.c bison.tab.h 
flex src/dplc/add_inp.flex 

    clean: 
rm bison.tab.c bison.tab.h lex.yy.c a.exe 
+0

好奇 - 你不想让你的makefile生成可执行文件?你只编译和链接可执行文件的main.c文件。在bison和flex生成* .c文件后,您需要编译并将它们与main.c链接起来,以生成一个使用它们的可执行文件。 – Kizaru 2012-05-03 17:54:25