Skip to content

Make check failed(undefined reference) with configure --enable-static --disable-shared #3646

@forif

Description

@forif

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions