我有這個簡單的服務器,必須註冊一個過程,使其通過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