4

ビルドでzeromqライブラリをリンクして、エンドユーザーのマシンに個別にインストールする必要がないようにします。

以下を使用してzeromqを構成しました。

./configure --enable-static --disable-shared --prefix=/home/xx/out

しかし、私がそうするとき:

g++ -o zclient zmqclient.o /home/xx/out/lib/libzmq.a

リンクエラーが発生します:

Undefined                       first referenced
 symbol                             in file

recv                                /opt/zmq/out/lib/libzmq.a(libzmq_la-signaler.o)
send                                /opt/zmq/out/lib/libzmq.a(libzmq_la-signaler.o)
__xnet_connect                      /opt/zmq/out/lib/libzmq.a(libzmq_la-tcp_connecter.o)
__xnet_socket                       /opt/zmq/out/lib/libzmq.a(libzmq_la-ip.o)
__xnet_getsockopt                   /opt/zmq/out/lib/libzmq.a(libzmq_la-tcp_connecter.o)
accept                              /opt/zmq/out/lib/libzmq.a(libzmq_la-tcp_listener.o)
listen                              /opt/zmq/out/lib/libzmq.a(libzmq_la-tcp_listener.o)
uuid_generate                       /opt/zmq/out/lib/libzmq.a(libzmq_la-uuid.o)
setsockopt                          /opt/zmq/out/lib/libzmq.a(libzmq_la-tcp_listener.o)
getaddrinfo                         /opt/zmq/out/lib/libzmq.a(libzmq_la-ip.o)
freeaddrinfo                        /opt/zmq/out/lib/libzmq.a(libzmq_la-ip.o)
__xnet_socketpair                   /opt/zmq/out/lib/libzmq.a(libzmq_la-signaler.o)
__xnet_bind                         /opt/zmq/out/lib/libzmq.a(libzmq_la-tcp_listener.o)
uuid_unparse                        /opt/zmq/out/lib/libzmq.a(libzmq_la-uuid.o)
ld: fatal: symbol referencing errors. No output written to zclient
collect2: ld returned 1 exit status

誰かが私がどこで間違っているのか教えてもらえますか、または別の方法を教えてもらえますか?

ありがとう!

4

1 に答える 1

3

ライブラリが判明しました:

-lsocket -lnsl -luuid

Linux では標準ですが、solaris では標準ではないため、次のように Makefile に含める必要があります。

g++ -lsocket -lnsl -luuid  zmqclient.cpp /home/xx/out/lib/libzmq.a   -o zmqclient
于 2012-07-17T11:36:13.353 に答える