我有这个简单的服务器,必须注册一个过程,使其通过RPC可用。这里是我的server.c:未定义的引用'registerrpc'
#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
使它工作。所以我试着做同样的事情。不幸的是,这对任何事都没有帮助。
(我不知道,如果这这里虽然属于,抱歉)
如果你有多个警告编译(加上'-Wall'的选项),它是否也会警告'registerrpc'已被隐式声明? – Arkku
是的。我没有添加它,因为我认为'server.c :(。text + 0x47):对'registerrpc'的未定义引用更具表现力 –
好吧,由于它是隐式声明的,所以它没有在'rpc/rpc中定义。 h'。找到正确的_header_可能会找到正确的库很长的路要走。 (或者可能该函数被弃用,并且你应该使用该头文件中的其他函数,但我不知道关于rpc。) – Arkku