2012-04-21 7 views
0

私は現在、flexとbisonを使用している単純なコンパイラで作業しています。 フォルダ構造: MainFolder - > SRC - 私は個別に実行すると、基本的に、彼らは罰金コンパイルして、次のファイルを生成し、次のファイルに add_inp.flex、bison.yのmain.cとstack.c を持っている>コンパイラ フレックス農産物lex.yy.cをとバイソンは、以下のadd_inp.tab.h add_inp.tab.c &を生成し、私がコンパイルされていない場合、私はこのエラーGNUmakefileはbisonとflexプログラムをコンパイルできません

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

を取得

 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 

私GNUmakeファイルですフレックスとバイソンのPR個別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'と表示されていますか? –

+1

エラーメッセージは、 'make'が' bison.tab.c'を作成するのに必要な 'src/dplc/bison.y'を見つけることができないことを伝えています –

答えて

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

あなたのメークファイルを作りたい実行可能ファイルですか?実行可能ファイルのmain.cをコンパイルしてリンクするだけです。 bisonとflexが* .cファイルを生成した後、それらをコンパイルしてmain.cとリンクして、それらを使用する実行可能ファイルを生成する必要があります。 – Kizaru

関連する問題