简体   繁体   English

omn​​iorb makefile服务器错误

[英]omniorb makefile server error

Im doing some adition simple program on omniorb 4.2 but the makefile for server gives me an error. 我在omniorb 4.2上做了一些简单的程序,但是服务器的makefile给了我一个错误。 Heres my makeserver file code: 继承我的makeserver文件代码:

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

And this is the error it gives me: 这是它给我的错误:

$ 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

The following rule is broken 以下规则已被破坏

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

You've told make that this rule creates Data.o , but it actually creates DataSK.o , so change the rule and OBJECTS 你已经告诉make这个规则创建Data.o ,但实际上它创建了DataSK.o ,所以更改规则和OBJECTS

OBJECTS       = DataSK.o CServiceA.o Server.o

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

As as side note, a lot of your makefile is unnecessary, the built-in rules and gcc dependency generation can cover most of the work: 正如旁注所示,许多makefile是不必要的,内置规则和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)

(The above may not work correctly as I haven't tested it.) (以上可能无法正常工作,因为我没有测试过。)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM