I'm new in zeromq. After install zeromq-4.1.3, I just run the "Hello World" example in C from "http://zguide.zeromq.org/page:all" in the following way:
gcc -c hwclient.c
g++ -o client hwclient.o -lzmq
But it appears many "undefined reference to": (I'm sorry that I don't have enough rep to upload a screenshot)
//usr/local/lib/libzmq.a(libzmq_la-pipe.o): In function
zmq::mutex_t::try_lock()': /usr/software/zeromq-4.1.3/src/mutex.hpp:114: undefined reference to
pthread_mutex_trylock' //usr/local/lib/libzmq.a(libzmq_la-ctx.o): In functionzmq::ctx_t::~ctx_t()': /usr/software/zeromq-4.1.3/src/ctx.cpp:117: undefined reference to
randombytes_close' //usr/local/lib/libzmq.a(libzmq_la-thread.o): In functionthread_routine': /usr/software/zeromq-4.1.3/src/thread.cpp:91: undefined reference to
pthread_sigmask' //usr/local/lib/libzmq.a(libzmq_la-thread.o): In functionzmq::thread_t::start(void (*)(void*), void*)': /usr/software/zeromq-4.1.3/src/thread.cpp:105: undefined reference to
pthread_create' //usr/local/lib/libzmq.a(libzmq_la-thread.o): In functionzmq::thread_t::stop()': /usr/software/zeromq-4.1.3/src/thread.cpp:111: undefined reference to
pthread_join' //usr/local/lib/libzmq.a(libzmq_la-zmq_utils.o): In functionzmq_curve_keypair': /usr/software/zeromq-4.1.3/src/zmq_utils.cpp:202: undefined reference to
crypto_box_keypair' //usr/local/lib/libzmq.a(libzmq_la-curve_client.o): In functionzmq::curve_client_t::encode(zmq::msg_t*)': /usr/software/zeromq-4.1.3/src/curve_client.cpp:151: undefined reference to
crypto_box_afternm' //usr/local/lib/libzmq.a(libzmq_la-curve_client.o): In functionzmq::curve_client_t::decode(zmq::msg_t*)': /usr/software/zeromq-4.1.3/src/curve_client.cpp:214: undefined reference to
crypto_box_open_afternm' //usr/local/lib/libzmq.a(libzmq_la-curve_client.o): In functionzmq::curve_client_t::curve_client_t(zmq::options_t const&)': /usr/software/zeromq-4.1.3/src/curve_client.cpp:61: undefined reference to
sodium_init' /usr/software/zeromq-4.1.3/src/curve_client.cpp:65: undefined reference tocrypto_box_keypair' //usr/local/lib/libzmq.a(libzmq_la-curve_client.o): In function
zmq::curve_client_t::produce_hello(zmq::msg_t*)': /usr/software/zeromq-4.1.3/src/curve_client.cpp:265: undefined reference tocrypto_box' //usr/local/lib/libzmq.a(libzmq_la-curve_client.o): In function
zmq::curve_client_t::process_welcome(unsigned char const*, unsigned long)': /usr/software/zeromq-4.1.3/src/curve_client.cpp:310: undefined reference tocrypto_box_open' /usr/software/zeromq-4.1.3/src/curve_client.cpp:320: undefined reference to
crypto_box_beforenm' //usr/local/lib/libzmq.a(libzmq_la-curve_client.o): In functionzmq::curve_client_t::produce_initiate(zmq::msg_t*)': /usr/software/zeromq-4.1.3/src/curve_client.cpp:340: undefined reference to
randombytes' /usr/software/zeromq-4.1.3/src/curve_client.cpp:344: undefined reference tocrypto_box' /usr/software/zeromq-4.1.3/src/curve_client.cpp:380: undefined reference to
crypto_box' //usr/local/lib/libzmq.a(libzmq_la-curve_client.o): In functionzmq::curve_client_t::process_ready(unsigned char const*, unsigned long)': /usr/software/zeromq-4.1.3/src/curve_client.cpp:424: undefined reference to
crypto_box_open_afternm' //usr/local/lib/libzmq.a(libzmq_la-curve_server.o): In functionzmq::curve_server_t::encode(zmq::msg_t*)': /usr/software/zeromq-4.1.3/src/curve_server.cpp:157: undefined reference to
crypto_box_afternm' //usr/local/lib/libzmq.a(libzmq_la-curve_server.o): In functionzmq::curve_server_t::decode(zmq::msg_t*)': /usr/software/zeromq-4.1.3/src/curve_server.cpp:223: undefined reference to
crypto_box_open_afternm' //usr/local/lib/libzmq.a(libzmq_la-curve_server.o): In functionzmq::curve_server_t::curve_server_t(zmq::session_base_t*, std::string const&, zmq::options_t const&)': /usr/software/zeromq-4.1.3/src/curve_server.cpp:64: undefined reference to
sodium_init' /usr/software/zeromq-4.1.3/src/curve_server.cpp:68: undefined reference tocrypto_box_keypair' //usr/local/lib/libzmq.a(libzmq_la-curve_server.o): In function
zmq::curve_server_t::process_hello(zmq::msg_t*)': /usr/software/zeromq-4.1.3/src/curve_server.cpp:319: undefined reference tocrypto_box_open' //usr/local/lib/libzmq.a(libzmq_la-curve_server.o): In function
zmq::curve_server_t::produce_welcome(zmq::msg_t*)': /usr/software/zeromq-4.1.3/src/curve_server.cpp:340: undefined reference torandombytes' /usr/software/zeromq-4.1.3/src/curve_server.cpp:350: undefined reference to
randombytes' /usr/software/zeromq-4.1.3/src/curve_server.cpp:355: undefined reference tocrypto_secretbox' /usr/software/zeromq-4.1.3/src/curve_server.cpp:365: undefined reference to
randombytes' /usr/software/zeromq-4.1.3/src/curve_server.cpp:377: undefined reference tocrypto_box' //usr/local/lib/libzmq.a(libzmq_la-curve_server.o): In function
zmq::curve_server_t::produce_ready(zmq::msg_t*)': /usr/software/zeromq-4.1.3/src/curve_server.cpp:547: undefined reference tocrypto_box_afternm' //usr/local/lib/libzmq.a(libzmq_la-curve_server.o): In function
zmq::curve_server_t::process_initiate(zmq::msg_t*)': /usr/software/zeromq-4.1.3/src/curve_server.cpp:421: undefined reference tocrypto_secretbox_open' /usr/software/zeromq-4.1.3/src/curve_server.cpp:454: undefined reference to
crypto_box_open' /usr/software/zeromq-4.1.3/src/curve_server.cpp:479: undefined reference tocrypto_box_open' /usr/software/zeromq-4.1.3/src/curve_server.cpp:496: undefined reference to
crypto_box_beforenm' collect2: error: ld returned 1 exit status
I also use the method in "How to build a project (say zeromq) as static library and linked it into my project":
./configure --enable-static --disable-shared --prefix=/home/gsp/zeromqworkspace/test
g++ -o client hwclient.o /home/gsp/zeromqworkspace/test/libzmq.a
It turns out to be: "g++: error: /home/gsp/zeromqworkspace/test/libzmq.a: No such file or directory".
I don't know what to do. I looking forward to your answers. Thank you!