我有这个简单的服务器,必须注册一个过程以使其可以通过RPC使用。这是我的server.c:

#include <rpc/rpc.h>
int * p_double(int n){
    static int d;
    d = 2 * n;
    return &d;
}
int main(){
    registerrpc(0x22222222, 1, 1, p_double, xdr_int, xdr_int );
    svc_run();
    return 0;
}

当我尝试编译它时,出现以下错误:
> gcc -o s server.c
/tmp/ccd0Roxs.o: In function `main':
server.c:(.text+0x47): undefined reference to `registerrpc'
collect2: ld returned 1 exit status

我从中得到的是它无法在任何地方或至少在registerrpc中找不到rpc/rpc.h
我正在使用Ubuntu 12.04,类的另一个学生通过安装portmap使它起作用,所以我尝试做同样的事情。不幸的是,这没有任何帮助。

(我不确定这是否属于这里,对不起)

最佳答案

您使用的rpc header 未定义registerrpc函数。我相信您可能正在遵循基于其他操作系统(或可能是较旧版本)的指南。我认为最好的解决方案是找到一个与rpc/rpc.h中的函数进行相同操作的指南。

但是,在Ubuntu上,您似乎可以使用apt-get install libtirpc-dev安装替代的RPC库,然后使用以下选项进行编译:

gcc -o server -I /usr/include/tirpc server.c -l tirpc

关于c - 未定义对 `registerrpc'的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13145930/

10-14 16:15