[CDRIVER-1175] Static compilation fails Created: 24/Mar/16  Updated: 10/Aug/16  Resolved: 24/Mar/16

Status: Closed
Project: C Driver
Component/s: Build
Affects Version/s: 1.3.4
Fix Version/s: 1.4.0

Type: Bug Priority: Major - P3
Reporter: Allan Bazinet Assignee: Hannes Magnusson
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

OSX 10.11.4, clang


Issue Links:
Related
is related to CDRIVER-592 Deprecate mongoc_init_ctor/dtor Closed

 Description   

When attempting a static library build, the build fails in the fam step. The same build process works properly if shared libraries are built instead.

./configure --enable-shared=no --enable-static=yes

Grendel% make V=2
Making all in src/libbson
make[1]: Entering directory '/Users/alb/Development/Fusion/Depend/mongo-c-driver-1.3.4/src/libbson'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/Users/alb/Development/Fusion/Depend/mongo-c-driver-1.3.4/src/libbson'
make[1]: Entering directory '/Users/alb/Development/Fusion/Depend/mongo-c-driver-1.3.4'
/bin/sh ./libtool --tag=CC --mode=link clang -I./src/mongoc -I./src/mongoc -I./src/libbson/src/bson -Isrc/libbson/src/bson -Wno-deprecated-declarations -Wno-cast-align -Wno-unneeded-internal-declaration -O2 -o fam examples/find_and_modify_with_opts/fam-fam.o libmongoc-1.0.la
libtool: link: clang -I./src/mongoc -I./src/mongoc -I./src/libbson/src/bson -Isrc/libbson/src/bson -Wno-deprecated-declarations -Wno-cast-align -Wno-unneeded-internal-declaration -O2 -o fam examples/find_and_modify_with_opts/fam-fam.o ./.libs/libmongoc-1.0.a /Users/alb/Development/Fusion/Depend/mongo-c-driver-1.3.4/src/libbson/.libs/libbson-1.0.a -lm -lsasl2 -pthread
clang: warning: argument unused during compilation: '-pthread'
Undefined symbols for architecture x86_64:
"___mongoc_counter_auth_failure", referenced from:
__mongoc_cluster_auth_node in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_auth_success", referenced from:
__mongoc_cluster_auth_node in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_clients_active", referenced from:
__mongoc_client_new_from_uri in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-client.o)
_mongoc_client_destroy in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-client.o)
"___mongoc_counter_clients_disposed", referenced from:
_mongoc_client_destroy in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-client.o)
"___mongoc_counter_cursors_active", referenced from:
__mongoc_cursor_new in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cursor.o)
__mongoc_cursor_destroy in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cursor.o)
__mongoc_cursor_clone in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cursor.o)
"___mongoc_counter_cursors_disposed", referenced from:
__mongoc_cursor_destroy in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cursor.o)
"___mongoc_counter_dns_failure", referenced from:
_mongoc_client_default_stream_initiator in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-client.o)
_mongoc_topology_scanner_node_setup in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-topology-scanner.o)
"___mongoc_counter_dns_success", referenced from:
_mongoc_client_default_stream_initiator in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-client.o)
_mongoc_topology_scanner_node_setup in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-topology-scanner.o)
"___mongoc_counter_op_egress_delete", referenced from:
_mongoc_cluster_sendv_to_server in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_egress_getmore", referenced from:
_mongoc_cluster_sendv_to_server in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_egress_insert", referenced from:
_mongoc_cluster_sendv_to_server in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_egress_killcursors", referenced from:
_mongoc_cluster_sendv_to_server in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_egress_msg", referenced from:
_mongoc_cluster_sendv_to_server in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_egress_query", referenced from:
_mongoc_cluster_sendv_to_server in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_egress_reply", referenced from:
_mongoc_cluster_sendv_to_server in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_egress_total", referenced from:
_mongoc_cluster_sendv_to_server in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_egress_update", referenced from:
_mongoc_cluster_sendv_to_server in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_ingress_delete", referenced from:
_mongoc_cluster_try_recv in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_ingress_getmore", referenced from:
_mongoc_cluster_try_recv in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_ingress_insert", referenced from:
_mongoc_cluster_try_recv in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_ingress_killcursors", referenced from:
_mongoc_cluster_try_recv in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_ingress_msg", referenced from:
_mongoc_cluster_try_recv in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_ingress_query", referenced from:
_mongoc_cluster_try_recv in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_ingress_reply", referenced from:
_mongoc_cluster_try_recv in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_ingress_total", referenced from:
_mongoc_cluster_try_recv in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_op_ingress_update", referenced from:
_mongoc_cluster_try_recv in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_protocol_ingress_error", referenced from:
_mongoc_cluster_try_recv in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-cluster.o)
"___mongoc_counter_streams_active", referenced from:
_mongoc_stream_buffered_new in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-stream-buffered.o)
_mongoc_stream_buffered_destroy in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-stream-buffered.o)
"___mongoc_counter_streams_disposed", referenced from:
_mongoc_stream_buffered_destroy in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-stream-buffered.o)
"___mongoc_counter_streams_egress", referenced from:
_mongoc_socket_sendv in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-socket.o)
"___mongoc_counter_streams_ingress", referenced from:
_mongoc_socket_recv in libmongoc-1.0.a(libmongoc_1_0_la-mongoc-socket.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Makefile:2320: recipe for target 'fam' failed
make[1]: *** [fam] Error 1



 Comments   
Comment by Githook User [ 24/Mar/16 ]

Author:

{u'username': u'bjori', u'name': u'Hannes Magnusson', u'email': u'bjori@php.net'}

Message: CDRIVER-1175: Static compilation fails
Branch: master
https://github.com/mongodb/mongo-c-driver/commit/31bd7e5fbc417aa36646d9b6e53c211281bbb9c4

Comment by Hannes Magnusson [ 24/Mar/16 ]

Just realized the example is missing mongoc_init () and mongoc_cleanup (), causing the failure. Embarrassing.

Comment by Hannes Magnusson [ 24/Mar/16 ]

I can repro this on OSX.
The quick fix is to --enable-examples=no

I can't see anything immediately wrong here, will have to poke around

Generated at Wed Feb 07 21:11:47 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.