-1

膨大な数のファイル (.pc pro*c コード、c コード、および .h ファイルを exe にコンパイル) を 1 つの exe にコンパイルしようとしています。

サンプルコード。

タブ文字はそれに応じて配置されることに注意してください。ただし、投稿中にここで削除されました。

申し訳ありませんが、インデントを修正しようとしました..しかし、今はもっとうまくいくでしょう。

行頭の T はタブ文字を表すことに注意してください。

build :$(OBJS)

T @if [ "$(EXE)" = "abc" ]; then \

T echodo  `command`\

T elif [ "$(ORA_CLIENT_LIB)" = "shared" ]; then \

T echodo $(CC) $(LDFLAGSSHRD) $(LIBPATHS)  -m64 -o $(EXE) $(OBJS) `cat $(ORACLE_HOME)/rdbms/lib/sysliblist ` $(LIBHOME)/libclntsh.so; \

T else \

T echodo $(CC) $(LIBPATH) -m64 -o $(EXE) $(OBJS) -L$(LIBPATH) $(PROLDLIB) $(AMOLIB) $(LIBHOME)/libclntsh. a ;\

T fi

変数 ORA CLIent Lib は共有に設定されています。それでも、コードは elif ブロックに入りません。私は何か不足していますか?

makeを実行すると、エラーが発生します...

------/bin/sh: -c: line 4: syntax error: unexpected end of file
------make: *** [build] Error 2

すべての .o ファイルが作成されましたが、exe は作成されません。何が欠けているのかわかりません。echodo は Oracle bin のファイルです。私は ProC コードをコンパイルしているので、関連性が必要です。

4

2 に答える 2

0

\私はこのような最後を除いてすべての行にsが表示されることを期待していました:

build: $(OBJS)
        @if [ "$(EXE)" = "abc" ]; then \
        echo --------; \
        elif [ "$(ORA_CLIENT_LIB)" = "shared" ]; then \
        echodo $(CC) $(LDFLAGSSHRD) $(LIBPATHS)  -m64 -o $(EXE) $(OBJS) `cat $(ORACLE_HOME)/rdbms/lib/sysliblist ` $(LIBHOME)/libclntsh.so; \
        else \
        echodo $(CC) $(LIBPATH) -m64 -o $(EXE) $(OBJS) -L$(LIBPATH) $(PROLDLIB) $(AMOLIB) $(LIBHOME)/libclntsh.a; \
        fi
于 2013-01-29T10:33:27.500 に答える
0

私は先に進んで推測します...

echodoすべての引数をエコーし​​、最初の引数をコマンドとして実行し、残りの引数を実行するコマンドの引数として実行すると推測しています。

しかし、ラインでは

echodo  --------

エコー--------て実行を試みます。という名前のコマンドがある可能性は低い--------ため、エラーが発生します。

文字列をエコーする場合--------は、通常のプレーンechoコマンドを使用します。

于 2013-01-29T10:29:57.523 に答える