2

我有这个简单的服务器,它必须注册一个过程才能通过 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所以我尝试做同样的事情。不幸的是,这对任何事情都没有帮助。

(我不确定这是否属于这里,抱歉)

4

3 回答 3

3

您需要链接 RPC 库,librpc

$ gcc -Wall -lrpc server.c -o server
于 2012-10-30T19:03:42.203 回答
1

您使用的 rpc 标头未定义registerrpc函数。我相信您可能正在遵循基于另一个操作系统(或可能是旧版本)的指南。我认为最好的解决方案是找到一个指南,用你的rpc/rpc.h.

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

gcc -o server -I /usr/include/tirpc server.c -l tirpc
于 2012-10-30T19:47:06.633 回答
0

您似乎没有引用包含 registerrpc 的库

于 2012-10-30T19:03:16.463 回答