1

UNIX scokets プログラムに関するいくつかのソース コードをコンパイルしようとしています。Linux では問題はありませんが、macOS では型定義の問題の前で立ち往生します。ここにどれだけ詳細を記載できるかわかりませんが、試してみます。

コンパイルするソースコードは次のとおりです。

errlib.c
errlib.h
server_test.c
sockwrap.c
sockwrap.h

mainにありserver_test.cます。

コンパイルするには、次を使用します。

gcc -Wall -DTRACE -o server_test server_test.c errlib.c sockwrap.c

これを Linux で実行しても問題はありませんが、macOS では 20 を超えるエラーが発生し、これらはすべて (おそらく) の定義の欠落に関するものですbool_t/usr/include/rpc/*macOS 内部ライブラリにあるファイルで何かが機能していないと思います。

<sys/types.h>が含まれているかどうかを探した/usr/include/rpc/xdr.hところ、欠落していないようです。

出力の最初の行の一部は次のgccとおりです。

In file included from server_test.c:16:
/usr/include/rpc/xdr.h:126:3: error: type name requires a specifier or qualifier
                bool_t  (*x_getlong)(struct __rpc_xdr *, int *);
                ^
/usr/include/rpc/xdr.h:126:10: error: function cannot return function type 'int (struct __rpc_xdr *, int *)'
                bool_t  (*x_getlong)(struct __rpc_xdr *, int *);
                        ^
/usr/include/rpc/xdr.h:128:3: error: type name requires a specifier or qualifier
                bool_t  (*x_putlong)(struct __rpc_xdr *, const int *);
                ^
/usr/include/rpc/xdr.h:128:10: error: function cannot return function type 'int (struct __rpc_xdr *, const int *)'
                bool_t  (*x_putlong)(struct __rpc_xdr *, const int *);
                        ^

/usr/include/rpc/xdr.h:128:3: error: duplicate member 'bool_t'
                bool_t  (*x_putlong)(struct __rpc_xdr *, const int *);
                ^
/usr/include/rpc/xdr.h:126:3: note: previous declaration is here
                bool_t  (*x_getlong)(struct __rpc_xdr *, int *);
                ^
/usr/include/rpc/xdr.h:136:3: error: type name requires a specifier or qualifier
                bool_t  (*x_getbytes)(struct __rpc_xdr *, char *, unsigned int);
...

および非常によく似た他の多くの行。

さらに詳しく知りたい方は、こちらからソースを入手できます

何が問題なのですか?

4

1 に答える 1