Issue description
after configure with --enable-static and --disable-shared option, make command succeed but
make check compilation failed with bunch of "undefined reference" in tests/testutil.cpp
Environment
- libzmq version (commit hash if unreleased): 4.3.2
- OS: Ubuntu-16.04
- gcc/g++ version: (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609
Minimal test code / Steps to reproduce the issue
./configure --enable-static --disable-shared
make
make check
What's the actual result? (include assertion message & call stack if applicable)
Making check in doc
make[1]: Entering directory '/home/nemo/workspace/git_codes/zeromq-4.3.2/doc'
make[1]: Nothing to be done for 'check'.
make[1]: Leaving directory '/home/nemo/workspace/git_codes/zeromq-4.3.2/doc'
make[1]: Entering directory '/home/nemo/workspace/git_codes/zeromq-4.3.2'
make tests/test_ancillaries tests/test_system tests/test_pair_inproc tests/test_pair_tcp tests/test_reqrep_inproc tests/test_reqrep_tcp tests/test_hwm tests/test_hwm_pubsub tests/test_reqrep_device tests/test_sub_forward tests/test_invalid_rep tests/test_msg_flags tests/test_msg_ffn tests/test_connect_resolve tests/test_immediate tests/test_last_endpoint tests/test_term_endpoint tests/test_srcfd tests/test_monitor tests/test_router_mandatory tests/test_router_mandatory_hwm tests/test_router_handover tests/test_probe_router tests/test_stream tests/test_stream_empty tests/test_stream_disconnect tests/test_stream_timeout tests/test_disconnect_inproc tests/test_unbind_wildcard tests/test_ctx_options tests/test_ctx_destroy tests/test_security_no_zap_handler tests/test_security_null tests/test_security_plain tests/test_security_zap tests/test_iov tests/test_spec_req tests/test_spec_rep tests/test_spec_dealer tests/test_spec_router tests/test_spec_pushpull tests/test_req_correlate tests/test_req_relaxed tests/test_conflate tests/test_inproc_connect tests/test_issue_566 tests/test_proxy tests/test_proxy_hwm tests/test_proxy_single_socket tests/test_proxy_terminate tests/test_getsockopt_memset tests/test_setsockopt tests/test_diffserv tests/test_connect_rid tests/test_bind_src_address tests/test_metadata tests/test_capabilities tests/test_xpub_nodrop tests/test_xpub_manual tests/test_xpub_welcome_msg tests/test_xpub_verbose tests/test_atomics tests/test_sockopt_hwm tests/test_heartbeats tests/test_stream_exceeds_buffer tests/test_pub_invert_matching tests/test_base85 tests/test_bind_after_connect_tcp tests/test_sodium tests/test_reconnect_ivl tests/test_mock_pub_sub tests/test_socket_null tests/test_security_curve tests/test_shutdown_stress tests/test_ipc_wildcard tests/test_pair_ipc tests/test_rebind_ipc tests/test_reqrep_ipc tests/test_use_fd tests/test_zmq_poll_fd tests/test_timeo tests/test_filter_ipc tests/test_fork tests/test_connect_delay_tipc tests/test_pair_tipc tests/test_reqrep_device_tipc tests/test_reqrep_tipc tests/test_router_mandatory_tipc tests/test_shutdown_stress_tipc tests/test_sub_forward_tipc tests/test_term_endpoint_tipc tests/test_address_tipc tests/test_abstract_ipc tests/test_many_sockets tests/test_socks unittests/unittest_poller unittests/unittest_ypipe unittests/unittest_mtrie unittests/unittest_ip_resolver unittests/unittest_udp_address unittests/unittest_radix_tree
make[2]: Entering directory '/home/nemo/workspace/git_codes/zeromq-4.3.2'
CXX tests/tests_test_ancillaries-test_ancillaries.o
CXXLD tests/test_ancillaries
CXX tests/tests_test_system-test_system.o
CXXLD tests/test_system
CXX tests/tests_test_pair_inproc-test_pair_inproc.o
CXXLD tests/test_pair_inproc
CXX tests/tests_test_pair_tcp-test_pair_tcp.o
CXXLD tests/test_pair_tcp
CXX tests/tests_test_reqrep_inproc-test_reqrep_inproc.o
CXXLD tests/test_reqrep_inproc
CXX tests/tests_test_reqrep_tcp-test_reqrep_tcp.o
CXXLD tests/test_reqrep_tcp
CXX tests/tests_test_hwm-test_hwm.o
CXXLD tests/test_hwm
CXX tests/tests_test_hwm_pubsub-test_hwm_pubsub.o
CXXLD tests/test_hwm_pubsub
CXX tests/tests_test_reqrep_device-test_reqrep_device.o
CXXLD tests/test_reqrep_device
CXX tests/tests_test_sub_forward-test_sub_forward.o
CXXLD tests/test_sub_forward
CXX tests/tests_test_invalid_rep-test_invalid_rep.o
CXXLD tests/test_invalid_rep
CXX tests/tests_test_msg_flags-test_msg_flags.o
CXXLD tests/test_msg_flags
CXX tests/tests_test_msg_ffn-test_msg_ffn.o
CXXLD tests/test_msg_ffn
CXX tests/tests_test_connect_resolve-test_connect_resolve.o
CXXLD tests/test_connect_resolve
CXX tests/tests_test_immediate-test_immediate.o
CXXLD tests/test_immediate
CXX tests/tests_test_last_endpoint-test_last_endpoint.o
CXXLD tests/test_last_endpoint
CXX tests/tests_test_term_endpoint-test_term_endpoint.o
CXXLD tests/test_term_endpoint
CXX tests/tests_test_srcfd-test_srcfd.o
CXXLD tests/test_srcfd
CXX tests/tests_test_monitor-test_monitor.o
CXXLD tests/test_monitor
CXX tests/tests_test_router_mandatory-test_router_mandatory.o
CXXLD tests/test_router_mandatory
CXX tests/tests_test_router_mandatory_hwm-test_router_mandatory_hwm.o
CXXLD tests/test_router_mandatory_hwm
CXX tests/tests_test_router_handover-test_router_handover.o
CXXLD tests/test_router_handover
CXX tests/tests_test_probe_router-test_probe_router.o
CXXLD tests/test_probe_router
CXX tests/tests_test_stream-test_stream.o
CXXLD tests/test_stream
CXX tests/tests_test_stream_empty-test_stream_empty.o
CXXLD tests/test_stream_empty
CXX tests/tests_test_stream_disconnect-test_stream_disconnect.o
CXXLD tests/test_stream_disconnect
CXX tests/tests_test_stream_timeout-test_stream_timeout.o
CXXLD tests/test_stream_timeout
CXX tests/tests_test_disconnect_inproc-test_disconnect_inproc.o
CXXLD tests/test_disconnect_inproc
CXX tests/tests_test_unbind_wildcard-test_unbind_wildcard.o
CXXLD tests/test_unbind_wildcard
CXX tests/tests_test_ctx_options-test_ctx_options.o
CXXLD tests/test_ctx_options
CXX tests/tests_test_ctx_destroy-test_ctx_destroy.o
CXXLD tests/test_ctx_destroy
CXX tests/tests_test_security_no_zap_handler-test_security_no_zap_handler.o
CXXLD tests/test_security_no_zap_handler
CXX tests/tests_test_security_null-test_security_null.o
CXXLD tests/test_security_null
CXX tests/tests_test_security_plain-test_security_plain.o
CXXLD tests/test_security_plain
CXX tests/tests_test_security_zap-test_security_zap.o
CXXLD tests/test_security_zap
CXX tests/tests_test_iov-test_iov.o
CXXLD tests/test_iov
CXX tests/tests_test_spec_req-test_spec_req.o
CXXLD tests/test_spec_req
CXX tests/tests_test_spec_rep-test_spec_rep.o
CXXLD tests/test_spec_rep
CXX tests/tests_test_spec_dealer-test_spec_dealer.o
CXXLD tests/test_spec_dealer
CXX tests/tests_test_spec_router-test_spec_router.o
CXXLD tests/test_spec_router
CXX tests/tests_test_spec_pushpull-test_spec_pushpull.o
CXXLD tests/test_spec_pushpull
CXX tests/tests_test_req_correlate-test_req_correlate.o
CXXLD tests/test_req_correlate
CXX tests/tests_test_req_relaxed-test_req_relaxed.o
CXXLD tests/test_req_relaxed
CXX tests/tests_test_conflate-test_conflate.o
CXXLD tests/test_conflate
CXX tests/tests_test_inproc_connect-test_inproc_connect.o
CXXLD tests/test_inproc_connect
CXX tests/tests_test_issue_566-test_issue_566.o
CXXLD tests/test_issue_566
CXX tests/tests_test_proxy-test_proxy.o
CXXLD tests/test_proxy
CXX tests/tests_test_proxy_hwm-test_proxy_hwm.o
CXXLD tests/test_proxy_hwm
CXX tests/tests_test_proxy_single_socket-test_proxy_single_socket.o
CXXLD tests/test_proxy_single_socket
CXX tests/tests_test_proxy_terminate-test_proxy_terminate.o
CXXLD tests/test_proxy_terminate
CXX tests/tests_test_getsockopt_memset-test_getsockopt_memset.o
CXXLD tests/test_getsockopt_memset
CXX tests/tests_test_setsockopt-test_setsockopt.o
CXXLD tests/test_setsockopt
CXX tests/tests_test_diffserv-test_diffserv.o
CXXLD tests/test_diffserv
CXX tests/tests_test_connect_rid-test_connect_rid.o
CXXLD tests/test_connect_rid
CXX tests/tests_test_bind_src_address-test_bind_src_address.o
CXXLD tests/test_bind_src_address
CXX tests/tests_test_metadata-test_metadata.o
CXXLD tests/test_metadata
CXX tests/tests_test_capabilities-test_capabilities.o
CXXLD tests/test_capabilities
CXX tests/tests_test_xpub_nodrop-test_xpub_nodrop.o
CXXLD tests/test_xpub_nodrop
CXX tests/tests_test_xpub_manual-test_xpub_manual.o
CXXLD tests/test_xpub_manual
CXX tests/tests_test_xpub_welcome_msg-test_xpub_welcome_msg.o
CXXLD tests/test_xpub_welcome_msg
CXX tests/tests_test_xpub_verbose-test_xpub_verbose.o
CXXLD tests/test_xpub_verbose
CXX tests/tests_test_atomics-test_atomics.o
CXXLD tests/test_atomics
CXX tests/tests_test_sockopt_hwm-test_sockopt_hwm.o
CXXLD tests/test_sockopt_hwm
CXX tests/tests_test_heartbeats-test_heartbeats.o
CXXLD tests/test_heartbeats
CXX tests/tests_test_stream_exceeds_buffer-test_stream_exceeds_buffer.o
CXXLD tests/test_stream_exceeds_buffer
CXX tests/tests_test_pub_invert_matching-test_pub_invert_matching.o
CXXLD tests/test_pub_invert_matching
CXX tests/tests_test_base85-test_base85.o
CXXLD tests/test_base85
CXX tests/tests_test_bind_after_connect_tcp-test_bind_after_connect_tcp.o
CXXLD tests/test_bind_after_connect_tcp
CXX tests/tests_test_sodium-test_sodium.o
CXXLD tests/test_sodium
./tests/libtestutil.a(tests_libtestutil_a-testutil_unity.o): In function `test_assert_success_message_errno_helper(int, char const*, char const*, int)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil_unity.cpp:47: undefined reference to `zmq_errno'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil_unity.cpp:47: undefined reference to `zmq_strerror'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil_unity.cpp:47: undefined reference to `zmq_errno'
./tests/libtestutil.a(tests_libtestutil_a-testutil_unity.o): In function `internal_manage_test_context(bool, bool)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil_unity.cpp:139: undefined reference to `zmq_ctx_term'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil_unity.cpp:144: undefined reference to `zmq_ctx_new'
./tests/libtestutil.a(tests_libtestutil_a-testutil_unity.o): In function `send_string_expect_success(void*, char const*, int)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil_unity.cpp:114: undefined reference to `zmq_send'
./tests/libtestutil.a(tests_libtestutil_a-testutil_unity.o): In function `recv_string_expect_success(void*, char const*, int)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil_unity.cpp:127: undefined reference to `zmq_recv'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil_unity.cpp:127: undefined reference to `zmq_recv'
./tests/libtestutil.a(tests_libtestutil_a-testutil_unity.o): In function `test_context_socket(int)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil_unity.cpp:219: undefined reference to `zmq_socket'
./tests/libtestutil.a(tests_libtestutil_a-testutil_unity.o): In function `test_context_socket_close(void*)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil_unity.cpp:227: undefined reference to `zmq_close'
./tests/libtestutil.a(tests_libtestutil_a-testutil_unity.o): In function `test_context_socket_close_zero_linger(void*)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil_unity.cpp:235: undefined reference to `zmq_setsockopt'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil_unity.cpp:236: undefined reference to `zmq_errno'
./tests/libtestutil.a(tests_libtestutil_a-testutil_unity.o): In function `test_bind(void*, char const*, char*, unsigned long)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil_unity.cpp:245: undefined reference to `zmq_bind'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil_unity.cpp:246: undefined reference to `zmq_getsockopt'
./tests/libtestutil.a(tests_libtestutil_a-testutil_unity.o): In function `bind_loopback(void*, int, char*, unsigned long)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil_unity.cpp:256: undefined reference to `zmq_setsockopt'
./tests/libtestutil.a(tests_libtestutil_a-testutil_unity.o): In function `bind_loopback_ipc(void*, char*, unsigned long)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil_unity.cpp:275: undefined reference to `zmq_has'
./tests/libtestutil.a(tests_libtestutil_a-testutil.o): In function `recv_bounce_msg(void*)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:79: undefined reference to `zmq_getsockopt'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:83: undefined reference to `zmq_getsockopt'
./tests/libtestutil.a(tests_libtestutil_a-testutil.o): In function `send_bounce_msg_may_fail(void*)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:107: undefined reference to `zmq_setsockopt'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:109: undefined reference to `zmq_send'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:111: undefined reference to `zmq_send'
./tests/libtestutil.a(tests_libtestutil_a-testutil.o): In function `recv_bounce_msg_fail(void*)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:119: undefined reference to `zmq_setsockopt'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:121: undefined reference to `zmq_recv'
./tests/libtestutil.a(tests_libtestutil_a-testutil.o): In function `s_recv(void*)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:143: undefined reference to `zmq_recv'
./tests/libtestutil.a(tests_libtestutil_a-testutil.o): In function `s_send_seq(void*, ...)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:166: undefined reference to `zmq_send'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:163: undefined reference to `zmq_send'
./tests/libtestutil.a(tests_libtestutil_a-testutil.o): In function `s_recv_seq(void*, ...)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:178: undefined reference to `zmq_msg_init'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:198: undefined reference to `zmq_getsockopt'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:188: undefined reference to `zmq_msg_recv'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:193: undefined reference to `zmq_msg_data'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:191: undefined reference to `zmq_msg_size'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:207: undefined reference to `zmq_msg_close'
./tests/libtestutil.a(tests_libtestutil_a-testutil.o): In function `close_zero_linger(void*)':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:213: undefined reference to `zmq_setsockopt'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:215: undefined reference to `zmq_close'
./tests/libtestutil.a(tests_libtestutil_a-testutil.o): In function `is_tipc_available()':
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:306: undefined reference to `zmq_init'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:308: undefined reference to `zmq_socket'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:310: undefined reference to `zmq_bind'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:312: undefined reference to `zmq_close'
/home/nemo/workspace/git_codes/zeromq-4.3.2/tests/testutil.cpp:313: undefined reference to `zmq_ctx_term'
collect2: error: ld returned 1 exit status
Makefile:3615: recipe for target 'tests/test_sodium' failed
make[2]: *** [tests/test_sodium] Error 1
make[2]: Leaving directory '/home/nemo/workspace/git_codes/zeromq-4.3.2'
Makefile:7924: recipe for target 'check-am' failed
make[1]: *** [check-am] Error 2
make[1]: Leaving directory '/home/nemo/workspace/git_codes/zeromq-4.3.2'
Makefile:6680: recipe for target 'check-recursive' failed
make: *** [check-recursive] Error 1
What's the expected result?
make check compilation succeed and all tests passed.
Issue description
after configure with --enable-static and --disable-shared option, make command succeed but
make check compilation failed with bunch of "undefined reference" in tests/testutil.cpp
Environment
Minimal test code / Steps to reproduce the issue
What's the actual result? (include assertion message & call stack if applicable)
What's the expected result?
make check compilation succeed and all tests passed.