Reputation: 59
I'm attempting to add ZMQ to c_icap.
This is my (which is modified from the stock makefile) Makefile.am:
pkglib_LTLIBRARIES=srv_bluvector_icap.la
INCLUDES = -I$(top_srcdir)
srv_bluvector_icap_la_LIBADD = /usr/local/lib/libzmq.la
srv_bluvector_icap_la_LIBADD = @MODULES_LIBADD@
srv_bluvector_icap_la_CFLAGS= -I../../include/
srv_bluvector_icap_la_LDFLAGS= -module -avoid-version
srv_bluvector_icap_la_SOURCES = srv_bluvector_icap.c
EXTRA_DIST= makefile.w32 srv_bluvector_icap.def
This is the output after I run make (after doing ./configure from the top level):
/bin/sh ../../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../include/ -D_REENTRANT -g -O2 -Wall -D_FILE_OFFSET_BITS=64 -MT srv_bluvector_icap_la-srv_bluvector_icap.lo -MD -MP -MF .deps/srv_bluvector_icap_la-srv_bluvector_icap.Tpo -c -o srv_bluvector_icap_la-srv_bluvector_icap.lo `test -f 'srv_bluvector_icap.c' || echo './'`srv_bluvector_icap.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../include/ -D_REENTRANT -g -O2 -Wall -D_FILE_OFFSET_BITS=64 -MT srv_bluvector_icap_la-srv_bluvector_icap.lo -MD -MP -MF .deps/srv_bluvector_icap_la-srv_bluvector_icap.Tpo -c srv_bluvector_icap.c -fno-common -DPIC -o .libs/srv_bluvector_icap_la-srv_bluvector_icap.o
mv -f .deps/srv_bluvector_icap_la-srv_bluvector_icap.Tpo .deps/srv_bluvector_icap_la-srv_bluvector_icap.Plo
/bin/sh ../../libtool --tag=CC --mode=link gcc -I../../include/ -D_REENTRANT -g -O2 -Wall -D_FILE_OFFSET_BITS=64 -module -avoid-version -o srv_bluvector_icap.la -rpath /usr/local/lib/c_icap srv_bluvector_icap_la-srv_bluvector_icap.lo
libtool: link: gcc -Wl,-undefined -Wl,dynamic_lookup -o .libs/srv_bluvector_icap.so -bundle .libs/srv_bluvector_icap_la-srv_bluvector_icap.o -O2
libtool: link: ( cd ".libs" && rm -f "srv_bluvector_icap.la" && ln -s "../srv_bluvector_icap.la" "srv_bluvector_icap.la" )
Which doesn't contain any zmq linking.
When I run the icap plugin, I get this:
Loading service :bluvector path srv_bluvector_icap.so
Found handler C_handler for service with extension:.so
Error loading module srv_bluvector_icap.so:dlopen(/usr/local/c-icap/lib/c_icap/srv_bluvector_icap.so, 10): Symbol not found: _zmq_connect
Referenced from: /usr/local/c-icap/lib/c_icap/srv_bluvector_icap.so
Expected in: flat namespace
in /usr/local/c-icap/lib/c_icap/srv_bluvector_icap.so
Error while loading service srv_bluvector_icap.so
Which, I believe means that zmq didn't get linked in.
So, what am I doing wrong?
Upvotes: 0
Views: 1225
Reputation: 31254
you are overwriting the value of your LIBADD
variable, by setting it twice:
srv_bluvector_icap_la_LIBADD = /usr/local/lib/libzmq.la
srv_bluvector_icap_la_LIBADD = @MODULES_LIBADD@
instead, you should do something like:
srv_bluvector_icap_la_LIBADD = /usr/local/lib/libzmq.la
srv_bluvector_icap_la_LIBADD+= @MODULES_LIBADD@
Upvotes: 2