zeromq / cppzmq

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

CPPZMQ_BUILD_TESTS failed with catch2. #511

Open jiapei100 opened 3 years ago

jiapei100 commented 3 years ago

While building, I got the following ERROR messages:

[  7%] Building CXX object tests/CMakeFiles/unit_tests.dir/context.cpp.o
cd ....../cppzmq/cppzmq/build/tests && /usr/local/bin/c++ -DZMQ_BUILD_DRAFT_API -I....../cppzmq/cppzmq -isystem /usr/include/pgm-5.2 -O3 -DNDEBUG -MD -MT tests/CMakeFiles/unit_tests.dir/context.cpp.o -MF CMakeFiles/unit_tests.dir/context.cpp.o.d -o CMakeFiles/unit_tests.dir/context.cpp.o -c ....../cppzmq/cppzmq/tests/context.cpp
In file included from /usr/local/include/catch2/internal/catch_assertion_handler.hpp:12,
                 from /usr/local/include/catch2/internal/catch_test_macro_impl.hpp:11,
                 from /usr/local/include/catch2/catch_test_macros.hpp:11,
                 from /usr/local/include/catch2/catch_template_test_macros.hpp:20,
                 from /usr/local/include/catch2/catch.hpp:36,
                 from ....../cppzmq/cppzmq/tests/context.cpp:1:
/usr/local/include/catch2/internal/catch_decomposer.hpp: In instantiation of ‘bool Catch::compareNotEqual(const LhsT&, RhsT&&) [with LhsT = long int; RhsT = void*&]’:
/usr/local/include/catch2/internal/catch_decomposer.hpp:197:37:   required from ‘Catch::BinaryExpr<LhsT, const RhsT&> Catch::operator!=(Catch::ExprLhs<LhsT>&&, RhsT&&) [with RhsT = void*; typename std::enable_if<(! std::is_arithmetic<typename std::remove_reference<_Tuple>::type>::value), int>::type <anonymous> = 0; LhsT = long int]’
....../cppzmq/cppzmq/tests/context.cpp:25:5:   required from here
/usr/local/include/catch2/internal/catch_decomposer.hpp:169:96: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
  169 |     auto compareNotEqual( LhsT const& lhs, RhsT&& rhs ) -> bool { return static_cast<bool>(lhs != rhs); }
      |                                                                                            ~~~~^~~~~~
make[2]: *** [tests/CMakeFiles/unit_tests.dir/build.make:107: tests/CMakeFiles/unit_tests.dir/context.cpp.o] Error 1
make[2]: Leaving directory '....../cppzmq/cppzmq/build'
make[1]: *** [CMakeFiles/Makefile2:675: tests/CMakeFiles/unit_tests.dir/all] Error 2
make[1]: Leaving directory '....../cppzmq/cppzmq/build'
make: *** [Makefile:149: all] Error 2

It looks, line 25 of file cppzmq/tests/context.cpp, namely: CHECK(NULL != context.handle()); is buggy.

Why? Can anybody help please?

gummif commented 3 years ago

Looks like that should be nullptr (or rather ZMQ_NULLPTR) instead of NULL., what compiler and std version are you using?

jiapei100 commented 3 years ago

@gummif Thank you man. nullptr is working fine. However, I got some more ERRORs:

[100%] Linking CXX executable unit_tests
cd ....../cppzmq/build/tests && /usr/bin/cmake -E cmake_link_script CMakeFiles/unit_tests.dir/link.txt --verbose=1
/usr/local/bin/c++ -std=c++14 -O3 -DNDEBUG CMakeFiles/unit_tests.dir/buffer.cpp.o CMakeFiles/unit_tests.dir/message.cpp.o CMakeFiles/unit_tests.dir/context.cpp.o CMakeFiles/unit_tests.dir/socket.cpp.o CMakeFiles/unit_tests.dir/socket_ref.cpp.o CMakeFiles/unit_tests.dir/poller.cpp.o CMakeFiles/unit_tests.dir/active_poller.cpp.o CMakeFiles/unit_tests.dir/multipart.cpp.o CMakeFiles/unit_tests.dir/recv_multipart.cpp.o CMakeFiles/unit_tests.dir/send_multipart.cpp.o CMakeFiles/unit_tests.dir/codec_multipart.cpp.o CMakeFiles/unit_tests.dir/monitor.cpp.o CMakeFiles/unit_tests.dir/utilities.cpp.o -o unit_tests  /usr/local/lib/libCatch2.a -lpthread /usr/lib/x86_64-linux-gnu/libzmq.so 
~/.linuxbrew/bin/ld: /lib/x86_64-linux-gnu/crt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/message.cpp.o: in function `CATCH2_INTERNAL_TEST_41()':
message.cpp:(.text+0x1dc5): undefined reference to `zmq_msg_set_routing_id'
~/.linuxbrew/bin/ld: message.cpp:(.text+0x1e30): undefined reference to `zmq_msg_routing_id'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/message.cpp.o: in function `CATCH2_INTERNAL_TEST_43()':
message.cpp:(.text+0x24cb): undefined reference to `zmq_msg_set_group'
~/.linuxbrew/bin/ld: message.cpp:(.text+0x2539): undefined reference to `zmq_msg_group'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_2()':
poller.cpp:(.text+0x6): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x1e): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_4()':
poller.cpp:(.text+0x36): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x4e): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_8()':
poller.cpp:(.text+0x67): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x78): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x93): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0xa2): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_6()':
poller.cpp:(.text+0xc7): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0xd8): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0xf0): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0xff): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_10()':
poller.cpp:(.text+0x144): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x162): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x179): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_12()':
poller.cpp:(.text+0x1f4): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x212): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x21f): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x237): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x246): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_32()':
poller.cpp:(.text+0x695): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x736): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x778): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_20()':
poller.cpp:(.text+0x82e): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x853): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x8d4): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x90e): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_18()':
poller.cpp:(.text+0x9cf): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0xa4c): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0xa8a): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_22()':
poller.cpp:(.text+0xb0c): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0xb7b): undefined reference to `zmq_poller_wait_all'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0xbb5): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_42()':
poller.cpp:(.text+0xc3f): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0xcab): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0xd3a): undefined reference to `zmq_poller_modify'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0xd78): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_40()':
poller.cpp:(.text+0xe4b): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0xeb7): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0xf57): undefined reference to `zmq_poller_modify'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0xf95): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_38()':
poller.cpp:(.text+0x106f): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x10e9): undefined reference to `zmq_poller_modify'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x1127): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_36()':
poller.cpp:(.text+0x11df): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x125a): undefined reference to `zmq_poller_modify'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x1298): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_26()':
poller.cpp:(.text+0x134e): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x1370): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x13d4): undefined reference to `zmq_poller_remove'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x140e): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_24()':
poller.cpp:(.text+0x14bf): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x1535): undefined reference to `zmq_poller_remove'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x1573): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_16()':
poller.cpp:(.text+0x162f): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x169d): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x16db): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_28()':
poller.cpp:(.text+0x177e): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x17af): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x1813): undefined reference to `zmq_poller_remove'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x184d): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_14()':
poller.cpp:(.text+0x1b7f): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x1beb): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x1c29): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_34()':
poller.cpp:(.text+0x1cda): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x1d50): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x1ea1): undefined reference to `zmq_poller_remove'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x1f04): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x1f56): undefined reference to `zmq_poller_remove'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_30()':
poller.cpp:(.text+0x20ba): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x2172): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x2212): undefined reference to `zmq_poller_wait_all'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x24a5): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_44()':
poller.cpp:(.text+0x2601): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x267f): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x2824): undefined reference to `zmq_poller_wait_all'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x2a25): undefined reference to `zmq_poller_modify'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x2ac2): undefined reference to `zmq_poller_wait_all'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x2c61): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_50()':
poller.cpp:(.text+0x2ed9): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x2f54): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x2f8a): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x2fa0): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x3048): undefined reference to `zmq_poller_wait_all'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x30e7): undefined reference to `zmq_poller_wait_all'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x3198): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_48()':
poller.cpp:(.text+0x33e9): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x3464): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x353d): undefined reference to `zmq_poller_wait_all'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x35dc): undefined reference to `zmq_poller_wait_all'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x368d): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_46()':
poller.cpp:(.text+0x37fd): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x3878): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x3a1b): undefined reference to `zmq_poller_wait_all'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x3acc): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_52()':
poller.cpp:(.text+0x3f2e): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x3fbe): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x4361): undefined reference to `zmq_poller_wait_all'
~/.linuxbrew/bin/ld: poller.cpp:(.text+0x4412): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_8() [clone .cold]':
poller.cpp:(.text.unlikely+0x119): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_6() [clone .cold]':
poller.cpp:(.text.unlikely+0x18f): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_10() [clone .cold]':
poller.cpp:(.text.unlikely+0x1dc): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_12() [clone .cold]':
poller.cpp:(.text.unlikely+0x2e1): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o:poller.cpp:(.text.unlikely+0x524): more undefined references to `zmq_poller_destroy' follow
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_65()::{lambda(zmq::event_flags)#1}::operator()(zmq::event_flags) const':
active_poller.cpp:(.text+0xa04): undefined reference to `zmq_poller_remove'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_45()':
active_poller.cpp:(.text+0xb7a): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0xc52): undefined reference to `zmq_poller_modify'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0xeea): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_43()':
active_poller.cpp:(.text+0xfda): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x10b3): undefined reference to `zmq_poller_modify'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x134a): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_0()':
active_poller.cpp:(.text+0x140a): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x1774): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_2()':
active_poller.cpp:(.text+0x17e6): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_4()':
active_poller.cpp:(.text+0x1dac): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x1ef6): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x206c): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_24()':
active_poller.cpp:(.text+0x2d4e): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x2dc2): undefined reference to `zmq_poller_remove'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_20()':
active_poller.cpp:(.text+0x2f3c): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `zmq::active_poller_t::add(zmq::socket_ref, zmq::event_flags, std::function<void (zmq::event_flags)>) [clone .constprop.0]':
active_poller.cpp:(.text+0x330a): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_6()':
active_poller.cpp:(.text+0x33e6): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_8()':
active_poller.cpp:(.text+0x3c8a): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x3f20): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x3fb0): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_12()':
active_poller.cpp:(.text+0x4808): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_16()':
active_poller.cpp:(.text+0x4b4f): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_32()':
active_poller.cpp:(.text+0x5134): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_37()':
active_poller.cpp:(.text+0x55cf): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x5974): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_39()':
active_poller.cpp:(.text+0x5a81): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x5efd): undefined reference to `zmq_poller_remove'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_41()':
active_poller.cpp:(.text+0x60c2): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_47()':
active_poller.cpp:(.text+0x6425): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x6600): undefined reference to `zmq_poller_modify'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_51()':
active_poller.cpp:(.text+0x6751): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x6b86): undefined reference to `zmq_poller_modify'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_53()':
active_poller.cpp:(.text+0x6f6d): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_55()':
active_poller.cpp:(.text+0x75c6): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_59()':
active_poller.cpp:(.text+0x7e86): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x7fd0): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x8060): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_63()':
active_poller.cpp:(.text+0x890b): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_14()':
active_poller.cpp:(.text+0x92fa): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x9501): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_34()':
active_poller.cpp:(.text+0x98e7): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x9dfc): undefined reference to `zmq_poller_remove'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0x9fd0): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_65()':
active_poller.cpp:(.text+0xa6fd): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0xa7a5): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_10()':
active_poller.cpp:(.text+0xb43a): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0xb603): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_30()':
active_poller.cpp:(.text+0xb79a): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0xb909): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0xb9a5): undefined reference to `zmq_poller_remove'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_28()':
active_poller.cpp:(.text+0xbb2a): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0xbc99): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0xbd35): undefined reference to `zmq_poller_remove'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_49()':
active_poller.cpp:(.text+0xbeba): undefined reference to `zmq_poller_new'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0xc083): undefined reference to `zmq_poller_add'
~/.linuxbrew/bin/ld: active_poller.cpp:(.text+0xc155): undefined reference to `zmq_poller_modify'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_45() [clone .cold]':
active_poller.cpp:(.text.unlikely+0x4c6): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_43() [clone .cold]':
active_poller.cpp:(.text.unlikely+0x622): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_0() [clone .cold]':
active_poller.cpp:(.text.unlikely+0x6b5): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_2() [clone .cold]':
active_poller.cpp:(.text.unlikely+0x7cf): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_4() [clone .cold]':
active_poller.cpp:(.text.unlikely+0x978): undefined reference to `zmq_poller_destroy'
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o:active_poller.cpp:(.text.unlikely+0xa32): more undefined references to `zmq_poller_destroy' follow
~/.linuxbrew/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `zmq::active_poller_t::wait(std::chrono::duration<long, std::ratio<1l, 1000l> >)':
active_poller.cpp:(.text._ZN3zmq15active_poller_t4waitENSt6chrono8durationIlSt5ratioILl1ELl1000EEEE[_ZN3zmq15active_poller_t4waitENSt6chrono8durationIlSt5ratioILl1ELl1000EEEE]+0x30): undefined reference to `zmq_poller_wait_all'
collect2: error: ld returned 1 exit status
make[2]: *** [tests/CMakeFiles/unit_tests.dir/build.make:294: tests/unit_tests] Error 1
make[2]: Leaving directory '....../cppzmq/build'
make[1]: *** [CMakeFiles/Makefile2:675: tests/CMakeFiles/unit_tests.dir/all] Error 2
make[1]: Leaving directory '....../cppzmq/build'
make: *** [Makefile:149: all] Error 2

Any more suggestions?

gummif commented 3 years ago

You need to link to libzmq.

jiapei100 commented 3 years ago

@gummif

Now, I explicitly linked libzmq -l/usr/lib/x86_64-linux-gnu/libzmq.so, which comes from Ubuntu 20.04 default repository. unit_tests is still buggy ...

[  7%] Linking CXX executable unit_tests
cd ....../cppzmq/build/tests && /usr/bin/cmake -E cmake_link_script CMakeFiles/unit_tests.dir/link.txt --verbose=1
/usr/local/bin/c++ -std=c++14 -l/usr/lib/x86_64-linux-gnu/libzmq.so -O3 -DNDEBUG CMakeFiles/unit_tests.dir/buffer.cpp.o CMakeFiles/unit_tests.dir/message.cpp.o CMakeFiles/unit_tests.dir/context.cpp.o CMakeFiles/unit_tests.dir/socket.cpp.o CMakeFiles/unit_tests.dir/socket_ref.cpp.o CMakeFiles/unit_tests.dir/poller.cpp.o CMakeFiles/unit_tests.dir/active_poller.cpp.o CMakeFiles/unit_tests.dir/multipart.cpp.o CMakeFiles/unit_tests.dir/recv_multipart.cpp.o CMakeFiles/unit_tests.dir/send_multipart.cpp.o CMakeFiles/unit_tests.dir/codec_multipart.cpp.o CMakeFiles/unit_tests.dir/monitor.cpp.o CMakeFiles/unit_tests.dir/utilities.cpp.o -o unit_tests  /usr/local/lib/libCatch2.a -lpthread /usr/lib/x86_64-linux-gnu/libzmq.so 
/usr/bin/ld: cannot find -l/usr/lib/x86_64-linux-gnu/libzmq.so
collect2: error: ld returned 1 exit status
make[2]: *** [tests/CMakeFiles/unit_tests.dir/build.make:294: tests/unit_tests] Error 1
make[2]: Leaving directory '....../cppzmq/build'
make[1]: *** [CMakeFiles/Makefile2:675: tests/CMakeFiles/unit_tests.dir/all] Error 2
make[1]: Leaving directory '....../cppzmq/build'
make: *** [Makefile:149: all] Error 2

However, I can see clearly, /usr/lib/x86_64-linux-gnu/libzmq.so exists:

➜  build git:(master) ✗ ll /usr/lib/x86_64-linux-gnu/libzmq.so 
lrwxrwxrwx 1 root root 15 Apr 20  2020 /usr/lib/x86_64-linux-gnu/libzmq.so -> libzmq.so.5.2.2
gummif commented 3 years ago

Looks like an extra /usr/lib/x86_64-linux-gnu/libzmq.so at the end. The -l/usr/lib/x86_64-linux-gnu/libzmq.so part should come after all .o files.

jiapei100 commented 3 years ago

@gummif

Actually, cmake has already found libzmq. I now removed my explicit -l/usr/lib/x86_64-linux-gnu/libzmq.so, and /usr/lib/x86_64-linux-gnu/libzmq.so is still there at the end. However, still failed.

[100%] Linking CXX executable unit_tests
cd ....../cppzmq/build/tests && /usr/bin/cmake -E cmake_link_script CMakeFiles/unit_tests.dir/link.txt --verbose=1
/usr/local/bin/c++ -std=c++14 -O3 -DNDEBUG CMakeFiles/unit_tests.dir/buffer.cpp.o CMakeFiles/unit_tests.dir/message.cpp.o CMakeFiles/unit_tests.dir/context.cpp.o CMakeFiles/unit_tests.dir/socket.cpp.o CMakeFiles/unit_tests.dir/socket_ref.cpp.o CMakeFiles/unit_tests.dir/poller.cpp.o CMakeFiles/unit_tests.dir/active_poller.cpp.o CMakeFiles/unit_tests.dir/multipart.cpp.o CMakeFiles/unit_tests.dir/recv_multipart.cpp.o CMakeFiles/unit_tests.dir/send_multipart.cpp.o CMakeFiles/unit_tests.dir/codec_multipart.cpp.o CMakeFiles/unit_tests.dir/monitor.cpp.o CMakeFiles/unit_tests.dir/utilities.cpp.o -o unit_tests  /usr/local/lib/libCatch2.a -lpthread /usr/lib/x86_64-linux-gnu/libzmq.so 
/usr/bin/ld: /lib/x86_64-linux-gnu/crt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
/usr/bin/ld: CMakeFiles/unit_tests.dir/message.cpp.o: in function `CATCH2_INTERNAL_TEST_41()':
message.cpp:(.text+0x1dc5): undefined reference to `zmq_msg_set_routing_id'
/usr/bin/ld: message.cpp:(.text+0x1e30): undefined reference to `zmq_msg_routing_id'
/usr/bin/ld: CMakeFiles/unit_tests.dir/message.cpp.o: in function `CATCH2_INTERNAL_TEST_43()':
message.cpp:(.text+0x24cb): undefined reference to `zmq_msg_set_group'
/usr/bin/ld: message.cpp:(.text+0x2539): undefined reference to `zmq_msg_group'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_2()':
poller.cpp:(.text+0x6): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x1e): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_4()':
poller.cpp:(.text+0x36): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x4e): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_8()':
poller.cpp:(.text+0x67): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x78): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x93): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: poller.cpp:(.text+0xa2): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_6()':
poller.cpp:(.text+0xc7): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0xd8): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0xf0): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: poller.cpp:(.text+0xff): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_10()':
poller.cpp:(.text+0x144): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x162): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0x179): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_12()':
poller.cpp:(.text+0x1f4): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x212): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0x21f): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x237): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: poller.cpp:(.text+0x246): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_32()':
poller.cpp:(.text+0x695): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x736): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0x778): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_20()':
poller.cpp:(.text+0x82e): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x853): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0x8d4): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0x90e): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_18()':
poller.cpp:(.text+0x9cf): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0xa4c): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0xa8a): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_22()':
poller.cpp:(.text+0xb0c): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0xb7b): undefined reference to `zmq_poller_wait_all'
/usr/bin/ld: poller.cpp:(.text+0xbb5): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_42()':
poller.cpp:(.text+0xc3f): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0xcab): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0xd3a): undefined reference to `zmq_poller_modify'
/usr/bin/ld: poller.cpp:(.text+0xd78): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_40()':
poller.cpp:(.text+0xe4b): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0xeb7): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0xf57): undefined reference to `zmq_poller_modify'
/usr/bin/ld: poller.cpp:(.text+0xf95): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_38()':
poller.cpp:(.text+0x106f): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x10e9): undefined reference to `zmq_poller_modify'
/usr/bin/ld: poller.cpp:(.text+0x1127): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_36()':
poller.cpp:(.text+0x11df): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x125a): undefined reference to `zmq_poller_modify'
/usr/bin/ld: poller.cpp:(.text+0x1298): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_26()':
poller.cpp:(.text+0x134e): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x1370): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0x13d4): undefined reference to `zmq_poller_remove'
/usr/bin/ld: poller.cpp:(.text+0x140e): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_24()':
poller.cpp:(.text+0x14bf): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x1535): undefined reference to `zmq_poller_remove'
/usr/bin/ld: poller.cpp:(.text+0x1573): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_16()':
poller.cpp:(.text+0x162f): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x169d): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0x16db): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_28()':
poller.cpp:(.text+0x177e): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x17af): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0x1813): undefined reference to `zmq_poller_remove'
/usr/bin/ld: poller.cpp:(.text+0x184d): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_14()':
poller.cpp:(.text+0x1b7f): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x1beb): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0x1c29): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_34()':
poller.cpp:(.text+0x1cda): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x1d50): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0x1ea1): undefined reference to `zmq_poller_remove'
/usr/bin/ld: poller.cpp:(.text+0x1f04): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: poller.cpp:(.text+0x1f56): undefined reference to `zmq_poller_remove'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_30()':
poller.cpp:(.text+0x20ba): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x2172): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0x2212): undefined reference to `zmq_poller_wait_all'
/usr/bin/ld: poller.cpp:(.text+0x24a5): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_44()':
poller.cpp:(.text+0x2601): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x267f): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0x2824): undefined reference to `zmq_poller_wait_all'
/usr/bin/ld: poller.cpp:(.text+0x2a25): undefined reference to `zmq_poller_modify'
/usr/bin/ld: poller.cpp:(.text+0x2ac2): undefined reference to `zmq_poller_wait_all'
/usr/bin/ld: poller.cpp:(.text+0x2c61): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_50()':
poller.cpp:(.text+0x2ed9): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x2f54): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0x2f8a): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x2fa0): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: poller.cpp:(.text+0x3048): undefined reference to `zmq_poller_wait_all'
/usr/bin/ld: poller.cpp:(.text+0x30e7): undefined reference to `zmq_poller_wait_all'
/usr/bin/ld: poller.cpp:(.text+0x3198): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_48()':
poller.cpp:(.text+0x33e9): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x3464): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0x353d): undefined reference to `zmq_poller_wait_all'
/usr/bin/ld: poller.cpp:(.text+0x35dc): undefined reference to `zmq_poller_wait_all'
/usr/bin/ld: poller.cpp:(.text+0x368d): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_46()':
poller.cpp:(.text+0x37fd): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x3878): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0x3a1b): undefined reference to `zmq_poller_wait_all'
/usr/bin/ld: poller.cpp:(.text+0x3acc): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_52()':
poller.cpp:(.text+0x3f2e): undefined reference to `zmq_poller_new'
/usr/bin/ld: poller.cpp:(.text+0x3fbe): undefined reference to `zmq_poller_add'
/usr/bin/ld: poller.cpp:(.text+0x4361): undefined reference to `zmq_poller_wait_all'
/usr/bin/ld: poller.cpp:(.text+0x4412): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_8() [clone .cold]':
poller.cpp:(.text.unlikely+0x119): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_6() [clone .cold]':
poller.cpp:(.text.unlikely+0x18f): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_10() [clone .cold]':
poller.cpp:(.text.unlikely+0x1dc): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o: in function `CATCH2_INTERNAL_TEST_12() [clone .cold]':
poller.cpp:(.text.unlikely+0x2e1): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/poller.cpp.o:poller.cpp:(.text.unlikely+0x524): more undefined references to `zmq_poller_destroy' follow
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_65()::{lambda(zmq::event_flags)#1}::operator()(zmq::event_flags) const':
active_poller.cpp:(.text+0xa04): undefined reference to `zmq_poller_remove'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_45()':
active_poller.cpp:(.text+0xb7a): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0xc52): undefined reference to `zmq_poller_modify'
/usr/bin/ld: active_poller.cpp:(.text+0xeea): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_43()':
active_poller.cpp:(.text+0xfda): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0x10b3): undefined reference to `zmq_poller_modify'
/usr/bin/ld: active_poller.cpp:(.text+0x134a): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_0()':
active_poller.cpp:(.text+0x140a): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0x1774): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_2()':
active_poller.cpp:(.text+0x17e6): undefined reference to `zmq_poller_new'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_4()':
active_poller.cpp:(.text+0x1dac): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0x1ef6): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0x206c): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_24()':
active_poller.cpp:(.text+0x2d4e): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0x2dc2): undefined reference to `zmq_poller_remove'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_20()':
active_poller.cpp:(.text+0x2f3c): undefined reference to `zmq_poller_new'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `zmq::active_poller_t::add(zmq::socket_ref, zmq::event_flags, std::function<void (zmq::event_flags)>) [clone .constprop.0]':
active_poller.cpp:(.text+0x330a): undefined reference to `zmq_poller_add'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_6()':
active_poller.cpp:(.text+0x33e6): undefined reference to `zmq_poller_new'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_8()':
active_poller.cpp:(.text+0x3c8a): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0x3f20): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0x3fb0): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_12()':
active_poller.cpp:(.text+0x4808): undefined reference to `zmq_poller_new'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_16()':
active_poller.cpp:(.text+0x4b4f): undefined reference to `zmq_poller_new'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_32()':
active_poller.cpp:(.text+0x5134): undefined reference to `zmq_poller_new'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_37()':
active_poller.cpp:(.text+0x55cf): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0x5974): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_39()':
active_poller.cpp:(.text+0x5a81): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0x5efd): undefined reference to `zmq_poller_remove'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_41()':
active_poller.cpp:(.text+0x60c2): undefined reference to `zmq_poller_new'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_47()':
active_poller.cpp:(.text+0x6425): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0x6600): undefined reference to `zmq_poller_modify'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_51()':
active_poller.cpp:(.text+0x6751): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0x6b86): undefined reference to `zmq_poller_modify'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_53()':
active_poller.cpp:(.text+0x6f6d): undefined reference to `zmq_poller_new'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_55()':
active_poller.cpp:(.text+0x75c6): undefined reference to `zmq_poller_new'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_59()':
active_poller.cpp:(.text+0x7e86): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0x7fd0): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0x8060): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_63()':
active_poller.cpp:(.text+0x890b): undefined reference to `zmq_poller_new'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_14()':
active_poller.cpp:(.text+0x92fa): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0x9501): undefined reference to `zmq_poller_add'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_34()':
active_poller.cpp:(.text+0x98e7): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0x9dfc): undefined reference to `zmq_poller_remove'
/usr/bin/ld: active_poller.cpp:(.text+0x9fd0): undefined reference to `zmq_poller_add'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_65()':
active_poller.cpp:(.text+0xa6fd): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0xa7a5): undefined reference to `zmq_poller_add'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_10()':
active_poller.cpp:(.text+0xb43a): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0xb603): undefined reference to `zmq_poller_add'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_30()':
active_poller.cpp:(.text+0xb79a): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0xb909): undefined reference to `zmq_poller_add'
/usr/bin/ld: active_poller.cpp:(.text+0xb9a5): undefined reference to `zmq_poller_remove'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_28()':
active_poller.cpp:(.text+0xbb2a): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0xbc99): undefined reference to `zmq_poller_add'
/usr/bin/ld: active_poller.cpp:(.text+0xbd35): undefined reference to `zmq_poller_remove'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_49()':
active_poller.cpp:(.text+0xbeba): undefined reference to `zmq_poller_new'
/usr/bin/ld: active_poller.cpp:(.text+0xc083): undefined reference to `zmq_poller_add'
/usr/bin/ld: active_poller.cpp:(.text+0xc155): undefined reference to `zmq_poller_modify'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_45() [clone .cold]':
active_poller.cpp:(.text.unlikely+0x4c6): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_43() [clone .cold]':
active_poller.cpp:(.text.unlikely+0x622): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_0() [clone .cold]':
active_poller.cpp:(.text.unlikely+0x6b5): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_2() [clone .cold]':
active_poller.cpp:(.text.unlikely+0x7cf): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `CATCH2_INTERNAL_TEST_4() [clone .cold]':
active_poller.cpp:(.text.unlikely+0x978): undefined reference to `zmq_poller_destroy'
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o:active_poller.cpp:(.text.unlikely+0xa32): more undefined references to `zmq_poller_destroy' follow
/usr/bin/ld: CMakeFiles/unit_tests.dir/active_poller.cpp.o: in function `zmq::active_poller_t::wait(std::chrono::duration<long, std::ratio<1l, 1000l> >)':
active_poller.cpp:(.text._ZN3zmq15active_poller_t4waitENSt6chrono8durationIlSt5ratioILl1ELl1000EEEE[_ZN3zmq15active_poller_t4waitENSt6chrono8durationIlSt5ratioILl1ELl1000EEEE]+0x30): undefined reference to `zmq_poller_wait_all'
collect2: error: ld returned 1 exit status
make[2]: *** [tests/CMakeFiles/unit_tests.dir/build.make:294: tests/unit_tests] Error 1
make[2]: Leaving directory '....../cppzmq/build'
make[1]: *** [CMakeFiles/Makefile2:675: tests/CMakeFiles/unit_tests.dir/all] Error 2
make[1]: Leaving directory '....../cppzmq/build'
make: *** [Makefile:149: all] Error 2
gummif commented 3 years ago

Should probably be -L/usr/lib/x86_64-linux-gnu -lzmq

jiapei100 commented 3 years ago

@gummif

Nope... Looks like not this issue. At least, there should be NO point to modify CMakeLists.txt, right?

gummif commented 3 years ago

Ok, I see now what this is, libzmq is not built with draft features but cppzmq is built with drafts on, try turning off drafts in cppzmq or rebuild libzmq with drafts.

jiapei100 commented 3 years ago

@gummif

Almost there... But still failed:

[100%] Linking CXX executable unit_tests
cd ....../cppzmq/build/tests && /usr/bin/cmake -E cmake_link_script CMakeFiles/unit_tests.dir/link.txt --verbose=1
/usr/local/bin/c++ -O3 -DNDEBUG CMakeFiles/unit_tests.dir/buffer.cpp.o CMakeFiles/unit_tests.dir/message.cpp.o CMakeFiles/unit_tests.dir/context.cpp.o CMakeFiles/unit_tests.dir/socket.cpp.o CMakeFiles/unit_tests.dir/socket_ref.cpp.o CMakeFiles/unit_tests.dir/poller.cpp.o CMakeFiles/unit_tests.dir/active_poller.cpp.o CMakeFiles/unit_tests.dir/multipart.cpp.o CMakeFiles/unit_tests.dir/recv_multipart.cpp.o CMakeFiles/unit_tests.dir/send_multipart.cpp.o CMakeFiles/unit_tests.dir/codec_multipart.cpp.o CMakeFiles/unit_tests.dir/monitor.cpp.o CMakeFiles/unit_tests.dir/utilities.cpp.o -o unit_tests  /usr/local/lib/libCatch2.a -lpthread /usr/lib/x86_64-linux-gnu/libzmq.so 
/usr/bin/ld: /lib/x86_64-linux-gnu/crt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
collect2: error: ld returned 1 exit status
make[2]: *** [tests/CMakeFiles/unit_tests.dir/build.make:294: tests/unit_tests] Error 1
make[2]: Leaving directory '....../cppzmq/build'
make[1]: *** [CMakeFiles/Makefile2:675: tests/CMakeFiles/unit_tests.dir/all] Error 2
make[1]: Leaving directory '....../cppzmq/build'
make: *** [Makefile:149: all] Error 2
gummif commented 3 years ago

Catch should define a main function I think. Are you using the latest master?

jiapei100 commented 3 years ago

@gummif Yup... I am using latest master of cppzmq, and catch2. But for libzmq, I just grabbed it directly from Ubuntu 20.04 repository.

gummif commented 3 years ago

The main function should be defined in https://github.com/zeromq/cppzmq/blob/bfaf8e884f79be91e3bc241af2a5dd31cff93cf6/tests/message.cpp since we are defining CATCH_CONFIG_MAIN there before including catch, that should work with catch v2.13.4.

jiapei100 commented 3 years ago

@gummif

The thing is: should I define a main() function by myself manually ? Or, it should come with this file message.cpp in the git repo?

gummif commented 3 years ago

It should just work if using the catch2 version expected. You could try commenting out find_package(Catch2 QUIET) in the tests CMakeLists.txt and rebuild and see if it downloads and builds catch2 locally, should work that way.