1

makefile のコード スニペット:

ERROR_PARSER_YACC = $(SRCDIR)/ermparseyac.y
ERROR_PARSER_LEX  = $(SRCDIR)/ermparselex.l

ERM_OBJS = \
    $(OBJDIR)/ermparseyac.o \
    $(OBJDIR)/ermparselex.o \
    $(OBJDIR)/ermclient.o \
    $(OBJDIR)/ermcommit.o \
    $(OBJDIR)/erminit.o \
    $(OBJDIR)/ermlog.o \
    $(OBJDIR)/ermmcp.o \
    $(OBJDIR)/ermsyslog.o \
    $(OBJDIR)/ermparse.o \
    $(OBJDIR)/ermreport.o

$(ERM_OBJS):    $(SRCDIR)/$(@F:.o=.c)
                @echo .... Compiling $(@:.o=.c)
                $(IDA_CC) $(SRCDIR)/$(@F:.o=.c) -o $@

SRCDIR の値は"/home/wholesale/children/dev5/comps/erm/src".

makefile を実行すると、次のエラーが表示されます。

.... Compiling /home/wholesale/children/dev5/comps/erm/obj/ermparselex.c
cc  -g                         -DANSI -DORA817 -DTRACE_ON -DIDA_VERSION='"ISP-RG-V5.10.7GEN2A"' -DNO_MCP -DBUILDING_ERP  -I/home/wholesale/children/dev5/comps/erm/include -I/home/wholesale/children/dev5/comps/erm/src -I/home/wholesale/children/dev5/comps/erm/module_test  -I/home/wholesale/children/dev5/comps/erm/include  -I/home/wholesale/children/dev5/comps/cfm/include    -c /home/wholesale/children/dev5/comps/erm/src/ermparselex.c -o /home/wholesale/children/dev5/comps/erm/obj/ermparselex.o

/pf24/wholesale/dvp/comps/erm/src/ermparselex.l:282: error: static declaration of âget_comment_lineâ follows non-static declaration
/pf24/wholesale/dvp/comps/erm/src/ermparselex.l:168: error: previous implicit declaration of âget_comment_lineâ was here

makefile が場所 "/home/wholesale/children/dev5/comps/erm/src" を、存在しない別の場所 "/pf24/wholesale/dvp/comps/erm/src/" に置き換える方法がわかりませんサーバーで。

4

1 に答える 1

0

make の出力とコンパイラの出力を混同しているようです。あなたが示したエラーメッセージはmakeによって生成されたのではなく、使用しているコンパイラ(おそらくgcc)によって生成されました。

assignemt toERROR_PARSER_LEXは延期された割り当てであることに注意してください。の値は、が使用SRCDIRされるたびに展開ERROR_PARSER_LEXされます。SRCDIRこれは、 の値が、本来あるべきと考えている値とは異なるように見える理由を説明している可能性があります。

編集

問題はメイクファイルに関連していないようです。/home/wholesale/children/dev5/comps/erm/src/ermparselex.cMake は、ソース ファイルとしてコンパイラに渡されることを明確に示してい ます。

別のファイルを指すエラー メッセージは、おそらく、一部のソース ファイルに /pf24 からのものが含まれていることを意味します。

gccの-Eオプションは、このような問題の診断に非常に役立ちます。-o ...オプションをそれに置き換えると、前処理されたソース コードが stdout に出力されます。これにより、/pf24 内のファイルをインクルードしているファイルが表示されます。

于 2012-05-29T11:35:32.850 に答える