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

私はUbuntu12.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 に答える