zeromq / cppzmq

Header-only C++ binding for libzmq
http://www.zeromq.org
MIT License
1.93k stars 757 forks source link

Install failed on last step #591

Closed rain2307 closed 1 year ago

rain2307 commented 1 year ago

platform: ubuntu22.04 (wsl2 on windows11) cmake version 3.22.1 gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0

sudo make -j4 install:

/usr/bin/ld: CMakeFiles/unit_tests.dir/message.cpp.o: in function `zmq::message_t::routing_id() const':
message.cpp:(.text._ZNK3zmq9message_t10routing_idEv[_ZNK3zmq9message_t10routing_idEv]+0x18): undefined reference to `zmq_msg_routing_id'
/usr/bin/ld: CMakeFiles/unit_tests.dir/message.cpp.o: in function `zmq::message_t::set_routing_id(unsigned int)':
message.cpp:(.text._ZN3zmq9message_t14set_routing_idEj[_ZN3zmq9message_t14set_routing_idEj]+0x21): undefined reference to `zmq_msg_set_routing_id'
/usr/bin/ld: CMakeFiles/unit_tests.dir/message.cpp.o: in function `zmq::message_t::group() const':
message.cpp:(.text._ZNK3zmq9message_t5groupEv[_ZNK3zmq9message_t5groupEv]+0x18): undefined reference to `zmq_msg_group'
/usr/bin/ld: CMakeFiles/unit_tests.dir/message.cpp.o: in function `zmq::message_t::set_group(char const*)':
message.cpp:(.text._ZN3zmq9message_t9set_groupEPKc[_ZN3zmq9message_t9set_groupEPKc]+0x24): undefined reference to `zmq_msg_set_group'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<zmq::no_user_data>::poller_t()':
poller.cpp:(.text._ZN3zmq8poller_tINS_12no_user_dataEEC2Ev[_ZN3zmq8poller_tINS_12no_user_dataEEC5Ev]+0x16): undefined reference to `zmq_poller_new'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<void>::poller_t()':
poller.cpp:(.text._ZN3zmq8poller_tIvEC2Ev[_ZN3zmq8poller_tIvEC5Ev]+0x16): undefined reference to `zmq_poller_new'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<int>::poller_t()':
poller.cpp:(.text._ZN3zmq8poller_tIiEC2Ev[_ZN3zmq8poller_tIiEC5Ev]+0x16): undefined reference to `zmq_poller_new'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<zmq::no_user_data>::wait_all(std::vector<zmq::poller_event<zmq::no_user_data>, std::allocator<zmq::poller_event<zmq::no_user_data> > >&, std::chrono::duration<long, std::ratio<1l, 1000l> >)':
poller.cpp:(.text._ZN3zmq8poller_tINS_12no_user_dataEE8wait_allERSt6vectorINS_12poller_eventIS1_EESaIS5_EENSt6chrono8durationIlSt5ratioILl1ELl1000EEEE[_ZN3zmq8poller_tINS_12no_user_dataEE8wait_allERSt6vectorINS_12poller_eventIS1_EESaIS5_EENSt6chrono8durationIlSt5ratioILl1ELl1000EEEE]+0x63): undefined reference to `zmq_poller_wait_all'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<zmq::no_user_data>::size() const':
poller.cpp:(.text._ZNK3zmq8poller_tINS_12no_user_dataEE4sizeEv[_ZNK3zmq8poller_tINS_12no_user_dataEE4sizeEv]+0x2f): undefined reference to `zmq_poller_size'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<zmq::no_user_data>::remove(zmq::socket_ref)':
poller.cpp:(.text._ZN3zmq8poller_tINS_12no_user_dataEE6removeENS_10socket_refE[_ZN3zmq8poller_tINS_12no_user_dataEE6removeENS_10socket_refE]+0x37): undefined reference to `zmq_poller_remove'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<int>::remove(zmq::socket_ref)':
poller.cpp:(.text._ZN3zmq8poller_tIiE6removeENS_10socket_refE[_ZN3zmq8poller_tIiE6removeENS_10socket_refE]+0x37): undefined reference to `zmq_poller_remove'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<int>::wait_all(std::vector<zmq::poller_event<int>, std::allocator<zmq::poller_event<int> > >&, std::chrono::duration<long, std::ratio<1l, 1000l> >)':
poller.cpp:(.text._ZN3zmq8poller_tIiE8wait_allERSt6vectorINS_12poller_eventIiEESaIS4_EENSt6chrono8durationIlSt5ratioILl1ELl1000EEEE[_ZN3zmq8poller_tIiE8wait_allERSt6vectorINS_12poller_eventIiEESaIS4_EENSt6chrono8durationIlSt5ratioILl1ELl1000EEEE]+0x63): undefined reference to `zmq_poller_wait_all'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<zmq::no_user_data>::modify(zmq::socket_ref, zmq::event_flags)':
poller.cpp:(.text._ZN3zmq8poller_tINS_12no_user_dataEE6modifyENS_10socket_refENS_11event_flagsE[_ZN3zmq8poller_tINS_12no_user_dataEE6modifyENS_10socket_refENS_11event_flagsE]+0x45): undefined reference to `zmq_poller_modify'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<zmq::socket_t>::poller_t()':
poller.cpp:(.text._ZN3zmq8poller_tINS_8socket_tEEC2Ev[_ZN3zmq8poller_tINS_8socket_tEEC5Ev]+0x16): undefined reference to `zmq_poller_new'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<zmq::socket_t>::wait_all(std::vector<zmq::poller_event<zmq::socket_t>, std::allocator<zmq::poller_event<zmq::socket_t> > >&, std::chrono::duration<long, std::ratio<1l, 1000l> >)':
poller.cpp:(.text._ZN3zmq8poller_tINS_8socket_tEE8wait_allERSt6vectorINS_12poller_eventIS1_EESaIS5_EENSt6chrono8durationIlSt5ratioILl1ELl1000EEEE[_ZN3zmq8poller_tINS_8socket_tEE8wait_allERSt6vectorINS_12poller_eventIS1_EESaIS5_EENSt6chrono8durationIlSt5ratioILl1ELl1000EEEE]+0x63): undefined reference to `zmq_poller_wait_all'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<zmq::socket_t>::modify(zmq::socket_ref, zmq::event_flags)':
poller.cpp:(.text._ZN3zmq8poller_tINS_8socket_tEE6modifyENS_10socket_refENS_11event_flagsE[_ZN3zmq8poller_tINS_8socket_tEE6modifyENS_10socket_refENS_11event_flagsE]+0x45): undefined reference to `zmq_poller_modify'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<zmq::no_user_data>::destroy_poller_t::operator()(void*)':
poller.cpp:(.text._ZN3zmq8poller_tINS_12no_user_dataEE16destroy_poller_tclEPv[_ZN3zmq8poller_tINS_12no_user_dataEE16destroy_poller_tclEPv]+0x1c): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<zmq::no_user_data>::add_impl(zmq::socket_ref, zmq::event_flags, zmq::no_user_data*)':
poller.cpp:(.text._ZN3zmq8poller_tINS_12no_user_dataEE8add_implENS_10socket_refENS_11event_flagsEPS1_[_ZN3zmq8poller_tINS_12no_user_dataEE8add_implENS_10socket_refENS_11event_flagsEPS1_]+0x50): undefined reference to `zmq_poller_add'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<void>::destroy_poller_t::operator()(void*)':
poller.cpp:(.text._ZN3zmq8poller_tIvE16destroy_poller_tclEPv[_ZN3zmq8poller_tIvE16destroy_poller_tclEPv]+0x1c): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<void>::add_impl(zmq::socket_ref, zmq::event_flags, void*)':
poller.cpp:(.text._ZN3zmq8poller_tIvE8add_implENS_10socket_refENS_11event_flagsEPv[_ZN3zmq8poller_tIvE8add_implENS_10socket_refENS_11event_flagsEPv]+0x50): undefined reference to `zmq_poller_add'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<int>::destroy_poller_t::operator()(void*)':
poller.cpp:(.text._ZN3zmq8poller_tIiE16destroy_poller_tclEPv[_ZN3zmq8poller_tIiE16destroy_poller_tclEPv]+0x1c): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<int>::add_impl(zmq::socket_ref, zmq::event_flags, int*)':
poller.cpp:(.text._ZN3zmq8poller_tIiE8add_implENS_10socket_refENS_11event_flagsEPi[_ZN3zmq8poller_tIiE8add_implENS_10socket_refENS_11event_flagsEPi]+0x50): undefined reference to `zmq_poller_add'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<zmq::socket_t>::destroy_poller_t::operator()(void*)':
poller.cpp:(.text._ZN3zmq8poller_tINS_8socket_tEE16destroy_poller_tclEPv[_ZN3zmq8poller_tINS_8socket_tEE16destroy_poller_tclEPv]+0x1c): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `zmq::poller_t<zmq::socket_t>::add_impl(zmq::socket_ref, zmq::event_flags, zmq::socket_t*)':
poller.cpp:(.text._ZN3zmq8poller_tINS_8socket_tEE8add_implENS_10socket_refENS_11event_flagsEPS1_[_ZN3zmq8poller_tINS_8socket_tEE8add_implENS_10socket_refENS_11event_flagsEPS1_]+0x50): undefined reference to `zmq_poller_add'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `zmq::poller_t<std::function<void (zmq::event_flags)> >::poller_t()':
active_poller.cpp:(.text._ZN3zmq8poller_tISt8functionIFvNS_11event_flagsEEEEC2Ev[_ZN3zmq8poller_tISt8functionIFvNS_11event_flagsEEEEC5Ev]+0x16): undefined reference to `zmq_poller_new'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `zmq::poller_t<std::function<void (zmq::event_flags)> >::remove(zmq::socket_ref)':
active_poller.cpp:(.text._ZN3zmq8poller_tISt8functionIFvNS_11event_flagsEEEE6removeENS_10socket_refE[_ZN3zmq8poller_tISt8functionIFvNS_11event_flagsEEEE6removeENS_10socket_refE]+0x37): undefined reference to `zmq_poller_remove'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `zmq::poller_t<std::function<void (zmq::event_flags)> >::modify(zmq::socket_ref, zmq::event_flags)':
active_poller.cpp:(.text._ZN3zmq8poller_tISt8functionIFvNS_11event_flagsEEEE6modifyENS_10socket_refES2_[_ZN3zmq8poller_tISt8functionIFvNS_11event_flagsEEEE6modifyENS_10socket_refES2_]+0x45): undefined reference to `zmq_poller_modify'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `zmq::poller_t<std::function<void (zmq::event_flags)> >::wait_all(std::vector<zmq::poller_event<std::function<void (zmq::event_flags)> >, std::allocator<zmq::poller_event<std::function<void (zmq::event_flags)> > > >&, std::chrono::duration<long, std::ratio<1l, 1000l> >)':
active_poller.cpp:(.text._ZN3zmq8poller_tISt8functionIFvNS_11event_flagsEEEE8wait_allERSt6vectorINS_12poller_eventIS4_EESaIS8_EENSt6chrono8durationIlSt5ratioILl1ELl1000EEEE[_ZN3zmq8poller_tISt8functionIFvNS_11event_flagsEEEE8wait_allERSt6vectorINS_12poller_eventIS4_EESaIS8_EENSt6chrono8durationIlSt5ratioILl1ELl1000EEEE]+0x63): undefined reference to `zmq_poller_wait_all'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `zmq::poller_t<std::function<void (zmq::event_flags)> >::add_impl(zmq::socket_ref, zmq::event_flags, std::function<void (zmq::event_flags)>*)':
active_poller.cpp:(.text._ZN3zmq8poller_tISt8functionIFvNS_11event_flagsEEEE8add_implENS_10socket_refES2_PS4_[_ZN3zmq8poller_tISt8functionIFvNS_11event_flagsEEEE8add_implENS_10socket_refES2_PS4_]+0x50): undefined reference to `zmq_poller_add'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `zmq::poller_t<std::function<void (zmq::event_flags)> >::destroy_poller_t::operator()(void*)':
active_poller.cpp:(.text._ZN3zmq8poller_tISt8functionIFvNS_11event_flagsEEEE16destroy_poller_tclEPv[_ZN3zmq8poller_tISt8functionIFvNS_11event_flagsEEEE16destroy_poller_tclEPv]+0x1c): undefined reference to `zmq_poller_destroy'
collect2: error: ld returned 1 exit status
make[2]: *** [tests/CMakeFiles/unit_tests.dir/build.make:290: tests/unit_tests] Error 1
make[1]: *** [CMakeFiles/Makefile2:143: tests/CMakeFiles/unit_tests.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
caicaiking commented 1 year ago

maybe need install libzmq first.

rain2307 commented 1 year ago

maybe need install libzmq first.

libzmq3-dev/jammy,now 4.3.4-2 amd64 [installed] lightweight messaging kernel (development files)

libzmq5/jammy,now 4.3.4-2 amd64 [installed,automatic] lightweight messaging kernel (shared library)


装了...
gummif commented 1 year ago

You need to disable draft API or build and install lizmq with draft API.

rain2307 commented 1 year ago

You need to disable draft API or build and install lizmq with draft API.

Thanks. It works.

The steps:

  1. delete build directory and recreate it.
  2. disable draft in CMakelists.txt:
    # if (EXISTS "${CMAKE_SOURCE_DIR}/.git")
    #     OPTION (ENABLE_DRAFTS "Build and install draft classes and methods" ON)
    # else ()
    OPTION (ENABLE_DRAFTS "Build and install draft classes and methods" OFF)
    # endif ()
  3. cmak ..
  4. sudo make -j4 install 👍★,°:.☆( ̄▽ ̄)/$:.°★