首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GNUmakefile无法编译bison和flex程序

GNUmakefile无法编译bison和flex程序
EN

Stack Overflow用户
提问于 2012-04-22 03:32:11
回答 2查看 817关注 0票数 0

我目前正在使用flex和bison开发一个简单的编译器。文件夹结构: MainFolder --> src -->编译器包含以下文件add_inp.flex,bison.ymain.c和stack.c基本上当我单独运行时,它们编译良好并生成以下文件flex产生lex.yy.c和bison产生add_inp.tab.c & add_inp.tab.h以下是我的GNUmake文件

代码语言:javascript
复制
     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

我得到了这个错误

代码语言:javascript
复制
make: *** No rule to make target `src/dplc/bison.y', needed by `bison.tab.c'.  Stop.

如果我没有单独编译flex和bison程序:

代码语言:javascript
复制
make: *** No rule to make target `src/dplc/bison.y', needed by `bison.tab.c'.  Stop.

我很感谢在这方面的任何帮助,我也需要为这些程序做构建,以便与用Java编写的执行器一起运行,请谁给我一些建议,我如何才能做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2012-04-25 14:41:22

这就是我让它工作的方式,感谢大家的帮助。

代码语言:javascript
复制
  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
票数 1
EN

Stack Overflow用户

发布于 2012-04-23 10:21:02

您正在告诉make一个文件src/dplc/bison.y,但是您声称您的目录结构是MainFolder --> src --> Compiler。那不应该是src/Compiler/bison.y吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10262273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档