无法使用 libtirpc 构建 RPC 项目

Unable to build RPC project with libtirpc

我有一个基于 RPC 的工作项目。 不幸的是,我被迫将 glibc 更新到 2.27-3。此更新清除了 /usr/include/rpc 中的所有 rpc headers。我发现,它们已被弃用,现在可以在 libtirpc 包中使用。 问题是,我不知道如何使用它们。 我试图从

更改我的包含
#include <rpc/rpc.h>

#include <tirpc/rpc/rpc.h>

但一些 rpc headers 包含来自 /rpc 的其他内容,因此他们也找不到它们。然后我把/usr/include/tirpc的内容复制到/usr/include/rpc。 它进一步构建了建筑,但我仍然无法构建项目,因为:

/usr/bin/ld: status_svc.o: undefined reference to symbol 'svcerr_noproc@@TIRPC_0.3.0' /usr/lib/libtirpc.so.3: error adding symbols: DSO missing from command line

collect2: error: ld returned 1 exit status

这是我的 makefile 的一部分:

# Compiler flags 

CFLAGS += -g -pthread
LDLIBS += -lnsl
RPCGENFLAGS = 

您可以使用 -I/usr/include/tirpc 作为编译器标志(在 CFLAGS 中)以避免修补文件的需要。这显然是头文件旨在用于您的发行版的方式。

链接器问题你应该可以通过链接到-ltirpc来避免。