非常简单的疑问:我使用rpcgen来实现RPC服务器,该服务器在向量中应用数学函数并将其返回给客户端。因此,我需要使用<math.h>。但是,由于我正在使用makefile而不是使用gcc或g++通过gcc编译该项目,所以我对应该如何做到这一点感到困惑。当简单地将文件包含在rpc_server.c中并使用log(x)函数时,我得到:
cc -g -DRPC_SVC_FG -c -o rpc_xdr.o rpc_xdr.c
cc -g -DRPC_SVC_FG -o rpc_client rpc_clnt.o rpc_client.o rpc_xdr.o -lnsl
cc -g -DRPC_SVC_FG -c -o rpc_svc.o rpc_svc.c
cc -g -DRPC_SVC_FG -c -o rpc_server.o rpc_server.c
cc -g -DRPC_SVC_FG -o rpc_server rpc_svc.o rpc_server.o rpc_xdr.o -lnsl
rpc_server.o: In function `ln_4_svc':
/home/gfrebello/Desktop/Sistemas Distribuídos/RPC/rpc_server.c:27: undefined reference to `log'
collect2: error: ld returned 1 exit status
makefile:42: recipe for target 'rpc_server' failed
make: *** [rpc_server] Error 1这是我的制作文件:
# This is a template Makefile generated by rpcgen
# Parameters
CLIENT = rpc_client
SERVER = rpc_server
SOURCES_CLNT.c =
SOURCES_CLNT.h =
SOURCES_SVC.c =
SOURCES_SVC.h =
SOURCES.x = rpc.x
TARGETS_SVC.c = rpc_svc.c rpc_server.c rpc_xdr.c
TARGETS_CLNT.c = rpc_clnt.c rpc_client.c rpc_xdr.c
TARGETS = rpc.h rpc_xdr.c rpc_clnt.c rpc_svc.c rpc_client.c rpc_server.c
OBJECTS_CLNT = $(SOURCES_CLNT.c:%.c=%.o) $(TARGETS_CLNT.c:%.c=%.o)
OBJECTS_SVC = $(SOURCES_SVC.c:%.c=%.o) $(TARGETS_SVC.c:%.c=%.o)
# Compiler flags
CFLAGS += -g -DRPC_SVC_FG
LDLIBS += -lnsl
RPCGENFLAGS = -C -N
# Targets
all : $(CLIENT) $(SERVER)
$(TARGETS) : $(SOURCES.x)
rpcgen $(RPCGENFLAGS) $(SOURCES.x)
$(OBJECTS_CLNT) : $(SOURCES_CLNT.c) $(SOURCES_CLNT.h) $(TARGETS_CLNT.c)
$(OBJECTS_SVC) : $(SOURCES_SVC.c) $(SOURCES_SVC.h) $(TARGETS_SVC.c)
$(CLIENT) : $(OBJECTS_CLNT)
$(LINK.c) -o $(CLIENT) $(OBJECTS_CLNT) $(LDLIBS)
$(SERVER) : $(OBJECTS_SVC)
$(LINK.c) -o $(SERVER) $(OBJECTS_SVC) $(LDLIBS)
clean:
$(RM) core $(TARGETS) $(OBJECTS_CLNT) $(OBJECTS_SVC) $(CLIENT) $(SERVER)我还想在我的最后一个应用程序中使用多线程(p线程),我甚至不知道使用这个设置是否可行。至少我在添加库路径时也会遇到同样的问题。
提前谢谢。
发布于 2021-12-12 10:35:37
我刚把-lm添加到LDLIBS部分,工作起来很有魅力。
https://stackoverflow.com/questions/38313599
复制相似问题