0

私は現在、flexとbisonを使用した単純なコンパイラに取り組んでいます。フォルダ構造:MainFolder-> src->次のファイルを含むコンパイラadd_inp.flex、bison.y main.c、stack.c基本的に、個別に実行すると、正常にコンパイルされ、次のファイルが生成されます。flexproduce lex.yy .cとbisonはadd_inp.tab.cとadd_inp.tab.hを生成します以下は私のGNUmakeファイルです

     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.

フレックスプログラムとバイソンプログラムを個別にコンパイルしていない場合:

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

これに関する助けに感謝します。また、これらのプログラムをJavaで記述されたExecutorと一緒に実行するには、Buildも実行する必要があります。誰かがそれを実行する方法について提案をお願いします。

4

2 に答える 2

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
于 2012-04-25T06:41:21.507 に答える
0

makeファイルについて語っていますsrc/dplc/bison.yが、ディレクトリ構造は であると主張していますMainFolder --> src --> Compiler。それはそうあるべきではありませんsrc/Compiler/bison.yか?

于 2012-04-23T02:21:02.417 に答える