2016-05-25 1 views
1

omniorb 4.2でいくつかのaditionシンプルなプログラムをやっていますが、サーバ用メイクファイルでエラーが表示されます。 はHERESに私のmakeserverファイルコード:omniorbメイクファイルサーバエラー

CC   = gcc 
CPPFLAGS  = -g -c 
LDFLAGS  = -g 
OMNI_HOME  = /opt/omniorb 
OMNI_INCLUDES = -I$(OMNI_HOME)/include 
OMNI_LIB_DIR = $(OMNI_HOME)/lib 
OMNIIDL  = $(OMNI_HOME)/bin/omniidl 
INCLUDES  = $(OMNI_INCLUDES) 
LIBS   = -lomniORB4 -lomnithread -lomniDynamic4 
OBJECTS  = Data.o CServiceA.o Server.o 

all Server: $(OBJECTS) 
    $(CC) $(LDFLAGS) -o Server -L$(OMNI_HOME)/lib $(OBJECTS)   $(LIBPATH) $(LIBS) 

Data.o: DataSK.cc Data.hh 
    $(CC) $(CPPFLAGS) $(INCLUDES) DataSK.cc 

Server.o: Server.cpp Data.hh 
    $(CC) $(CPPFLAGS) $(INCLUDES) Server.cpp 

CServiceA.o: CServiceA.cpp CServiceA.h Data.hh 
    $(CC) $(CPPFLAGS) $(INCLUDES) CServiceA.cpp 

DataSK.cc: Data.idl 
    $(OMNI_HOME)/bin/omniidl -bcxx Data.idl 

clean clean_all: 
    rm -fr *.o 
    rm -fr core 
    rm -fr *.hh 
    rm -fr *SK.cc 
    rm -fr Server 

そして、これが、それは私を与えるエラーです:

$ make -f MakeServer 
gcc -g -c -I/opt/omniorb/include DataSK.cc 
gcc -g -c -I/opt/omniorb/include CServiceA.cpp 
gcc -g -c -I/opt/omniorb/include Server.cpp 
gcc -g -o Server -L/opt/omniorb/lib Data.o CServiceA.o Server.o -  lomniORB4 -lomnithread -lomniDynamic4 
gcc: error: Data.o: file or directory doesn't exist 
MakeServer:13: fail in instructions for objective 'all' 
make: *** [all] Error 1 

答えて

0

次のルールが

Data.o: DataSK.cc Data.hh 
    $(CC) $(CPPFLAGS) $(INCLUDES) DataSK.cc 

を壊れているあなたは、この規則ことを確認指示しましたData.oを作成しますが、実際にはDataSK.oが作成されるため、ルールを変更してOBJECTS

OBJECTS  = DataSK.o CServiceA.o Server.o 

DataSK.o: DataSK.cc DataSK.hh 
    $(CC) $(CPPFLAGS) $(INCLUDES) DataSK.cc 

サイドノート、あなたのメイクファイルの多くは不要であるとして、組み込みルールとgcc依存関係の世代が仕事のほとんどをカバーすることができたよう:

omni_home := /opt/omniorb 

CPPFLAGS := -I$(omni_home)/include -MMD -MP 
CXXFLAGS := -g 
LDFLAGS := -L$(omni_home)/lib 
LDLIBS := -lomniORB4 -lomnithread -lomniDynamic4 

objs := DataSK.o CServiceA.o Server.o 
deps := $(objs:.o=.d) 

.PHONY: all clean 

all: Server 

Server: CC := g++ 
Server: $(objs) 

DataSK.o: DataSK.cc 
DataSK.cc DataSK.hh: Data.idl 
    $(omni_home)/bin/omniidl -bcxx $< 

clean: ; $(RM) $(objs) $(deps) DataSK.cc DataSK.hh Server 

-include $(deps) 

(上記ではないかもしれません私はそれをテストしていないので正常に動作します。)

+0

まあ、それは結局問題でした。今私は別の問題がサーバーを実行している。私はomniNamesを起動しますが、サーバーを実行しようとすると、私に 'corba :: system exception'が与えられます。 あなたのコードは私のものよりも優れていました。 2ドットなしでうまくいく。 .dファイルはどのような目的のために質問がありますか? '$ ./Server : これは./Serverが私を与えるエラーである「IOR:010000001600000049444c3a446174612f53657276696365413a312 e30000000010000000000000064000000010102000c0000003139322e3 136382e312e3500b9e3000 ...」 キャッチCORBA :: SystemException.' – Pepe

+0

私はその量の持つ例外であなたを助けることができません情報には、この質問とは無関係な新しい質問を開始してみてください。 '.d'ファイルは、依存関係を格納するGCCによって生成されたmakefileフラグメントであるため、' CServiceA.o:DataSK.hh'のようなものを書く必要はありません。 – user657267

+0

ああ...私はそれを試してみましょう、私を助けるためにthx。さて、問題は解決しました。 – Pepe