我在 omniorb 4.2 上做了一些简单的附加程序,但是服务器的 makefile 给我一个错误。 这是我的 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
这是它给我的错误:
$ 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
最佳答案
下面的规则被打破了
Data.o: DataSK.cc Data.hh
$(CC) $(CPPFLAGS) $(INCLUDES) DataSK.cc
你已经告诉 make 这个规则创建了 Data.o
,但它实际上创建了 DataSK.o
,所以改变规则和 OBJECTS
OBJECTS = DataSK.o CServiceA.o Server.o
DataSK.o: DataSK.cc DataSK.hh
$(CC) $(CPPFLAGS) $(INCLUDES) DataSK.cc
如旁注,您的许多 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)
(以上可能无法正常工作,因为我还没有测试过。)
关于c++ - omniorb makefile 服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37426265/