On 12/05/2012 08:44 PM, Alan Conway wrote:
There is a serious problem with this patch. My build (on RHEL5 at trunk
r1417511) fails with lots of these:

g++: /usr/lib64/libqpidcommon.so: No such file or directory
g++: /usr/lib64/libqpidtypes.so: No such file or directory


It looksl like using -lqpidcommon on the link line tries to link with
the library installed in /usr/lib, and fails to build if Qpid is not
installed.

It is most important that qpid's own libraries be specified via an
explicit path, and not discovered by the linker, to ensure that a build
actually links with its own libraries.

I'm not sure what the proper way to do this is with libtool (curse you
libtool!!!!) but I don't think we can leave it this way.

I couldn't reproduce the problem on RHEL 5.8, using latest trunk. Whether or not there were qpid libraries installed it seemed to pick up the correct ones from the build for me).

That said, we should probably be linking against the .la with libtool? That seems to have been the approach previously which didn't cause these problems.

Attached is a patch that would do this. Are you able to test it on the system that caused problems to ensure it does actually fix the problem? It works for me on Fedora 17 and RHEL 5.8, but as I say I couldn't reproduce the problem in the first place.
Index: cpp/bindings/qmf2/examples/cpp/Makefile.am
===================================================================
--- cpp/bindings/qmf2/examples/cpp/Makefile.am	(revision 1417786)
+++ cpp/bindings/qmf2/examples/cpp/Makefile.am	(working copy)
@@ -21,16 +21,19 @@
 
 AM_CPPFLAGS = $(INCLUDE)
 
+TYPES_LIB=$(top_builddir)/src/libqpidtypes.la
+MESSAGING_LIB=$(top_builddir)/src/libqpidmessaging.la
+
 noinst_PROGRAMS=agent event_driven_list_agents list_agents print_events
 
 agent_SOURCES=agent.cpp
-agent_LDADD=$(top_builddir)/src/libqmf2.la -lqpidtypes -lqpidmessaging
+agent_LDADD=$(top_builddir)/src/libqmf2.la $(TYPES_LIB) $(MESSAGING_LIB)
 
 list_agents_SOURCES=list_agents.cpp
-list_agents_LDADD=$(top_builddir)/src/libqmf2.la -lqpidmessaging
+list_agents_LDADD=$(top_builddir)/src/libqmf2.la $(MESSAGING_LIB)
 
 event_driven_list_agents_SOURCES=event_driven_list_agents.cpp
-event_driven_list_agents_LDADD=$(top_builddir)/src/libqmf2.la -lqpidmessaging
+event_driven_list_agents_LDADD=$(top_builddir)/src/libqmf2.la $(MESSAGING_LIB)
 
 print_events_SOURCES=print_events.cpp
-print_events_LDADD=$(top_builddir)/src/libqmf2.la -lqpidtypes -lqpidmessaging
+print_events_LDADD=$(top_builddir)/src/libqmf2.la $(TYPES_LIB) $(MESSAGING_LIB)
Index: cpp/examples/makedist.mk
===================================================================
--- cpp/examples/makedist.mk	(revision 1417786)
+++ cpp/examples/makedist.mk	(working copy)
@@ -20,6 +20,7 @@
 AM_CXXFLAGS = $(WARNING_CFLAGS)
 INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include
 CLIENT_LIB=$(top_builddir)/src/libqpidclient.la
+COMMON_LIB=$(top_builddir)/src/libqpidcommon.la
 CONSOLE_LIB=$(top_builddir)/src/libqmfconsole.la
 CLIENTFLAGS=-lqpidclient
 CONSOLEFLAGS=-lqmfconsole
Index: cpp/examples/messaging/Makefile.am
===================================================================
--- cpp/examples/messaging/Makefile.am	(revision 1417786)
+++ cpp/examples/messaging/Makefile.am	(working copy)
@@ -22,6 +22,7 @@
 AM_CXXFLAGS = $(WARNING_CFLAGS)
 INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include
 CLIENT_LIB=$(top_builddir)/src/libqpidmessaging.la
+TYPES_LIB=$(top_builddir)/src/libqpidtypes.la
 CLIENTFLAGS=-lqpidmessaging
 
 noinst_PROGRAMS=drain spout client server map_sender map_receiver hello_world hello_xml
@@ -33,10 +34,10 @@
 hello_xml_LDADD=$(CLIENT_LIB)
 
 drain_SOURCES=drain.cpp OptionParser.h OptionParser.cpp
-drain_LDADD=$(CLIENT_LIB) -lqpidtypes
+drain_LDADD=$(CLIENT_LIB) $(TYPES_LIB)
 
 spout_SOURCES=spout.cpp OptionParser.h OptionParser.cpp
-spout_LDADD=$(CLIENT_LIB) -lqpidtypes
+spout_LDADD=$(CLIENT_LIB) $(TYPES_LIB)
 
 client_SOURCES=client.cpp
 client_LDADD=$(CLIENT_LIB)
@@ -45,10 +46,10 @@
 server_LDADD=$(CLIENT_LIB)
 
 map_sender_SOURCES=map_sender.cpp
-map_sender_LDADD=$(CLIENT_LIB) -lqpidtypes
+map_sender_LDADD=$(CLIENT_LIB) $(TYPES_LIB)
 
 map_receiver_SOURCES=map_receiver.cpp
-map_receiver_LDADD=$(CLIENT_LIB) -lqpidtypes
+map_receiver_LDADD=$(CLIENT_LIB) $(TYPES_LIB)
 
 examples_DATA=                 \
 	hello_world.cpp	       \
Index: cpp/examples/old_api/direct/Makefile.am
===================================================================
--- cpp/examples/old_api/direct/Makefile.am	(revision 1417786)
+++ cpp/examples/old_api/direct/Makefile.am	(working copy)
@@ -23,13 +23,13 @@
 
 noinst_PROGRAMS=direct_producer listener declare_queues
 direct_producer_SOURCES=direct_producer.cpp
-direct_producer_LDADD=$(CLIENT_LIB) -lqpidcommon
+direct_producer_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 listener_SOURCES=listener.cpp
-listener_LDADD=$(CLIENT_LIB) -lqpidcommon
+listener_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 declare_queues_SOURCES=declare_queues.cpp
-declare_queues_LDADD=$(CLIENT_LIB) -lqpidcommon
+declare_queues_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 examples_DATA=               \
 	direct_producer.cpp  \
Index: cpp/examples/old_api/failover/Makefile.am
===================================================================
--- cpp/examples/old_api/failover/Makefile.am	(revision 1417786)
+++ cpp/examples/old_api/failover/Makefile.am	(working copy)
@@ -24,13 +24,13 @@
 noinst_PROGRAMS=declare_queues resuming_receiver replaying_sender
 
 declare_queues_SOURCES=declare_queues.cpp
-declare_queues_LDADD=$(CLIENT_LIB) -lqpidcommon
+declare_queues_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 resuming_receiver_SOURCES=resuming_receiver.cpp
-resuming_receiver_LDADD=$(CLIENT_LIB) -lqpidcommon
+resuming_receiver_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 replaying_sender_SOURCES=replaying_sender.cpp
-replaying_sender_LDADD=$(CLIENT_LIB) -lqpidcommon
+replaying_sender_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 examples_DATA=                \
 	declare_queues.cpp    \
Index: cpp/examples/old_api/fanout/Makefile.am
===================================================================
--- cpp/examples/old_api/fanout/Makefile.am	(revision 1417786)
+++ cpp/examples/old_api/fanout/Makefile.am	(working copy)
@@ -26,7 +26,7 @@
 fanout_producer_LDADD=$(CLIENT_LIB)
 
 listener_SOURCES=listener.cpp
-listener_LDADD=$(CLIENT_LIB) -lqpidcommon
+listener_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 examples_DATA=               \
 	fanout_producer.cpp  \
Index: cpp/examples/old_api/pub-sub/Makefile.am
===================================================================
--- cpp/examples/old_api/pub-sub/Makefile.am	(revision 1417786)
+++ cpp/examples/old_api/pub-sub/Makefile.am	(working copy)
@@ -24,10 +24,10 @@
 noinst_PROGRAMS=topic_listener topic_publisher
 
 topic_listener_SOURCES=topic_listener.cpp
-topic_listener_LDADD=$(CLIENT_LIB) -lqpidcommon
+topic_listener_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 topic_publisher_SOURCES=topic_publisher.cpp
-topic_publisher_LDADD=$(CLIENT_LIB) -lqpidcommon
+topic_publisher_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 examples_DATA=               \
 	topic_listener.cpp   \
Index: cpp/examples/old_api/request-response/Makefile.am
===================================================================
--- cpp/examples/old_api/request-response/Makefile.am	(revision 1417786)
+++ cpp/examples/old_api/request-response/Makefile.am	(working copy)
@@ -24,10 +24,10 @@
 noinst_PROGRAMS=client server
 
 client_SOURCES=client.cpp
-client_LDADD=$(CLIENT_LIB) -lqpidcommon
+client_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 server_SOURCES=server.cpp
-server_LDADD=$(CLIENT_LIB) -lqpidcommon
+server_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 examples_DATA=               \
 	server.cpp           \
Index: cpp/examples/old_api/tradedemo/Makefile.am
===================================================================
--- cpp/examples/old_api/tradedemo/Makefile.am	(revision 1417786)
+++ cpp/examples/old_api/tradedemo/Makefile.am	(working copy)
@@ -24,13 +24,13 @@
 noinst_PROGRAMS=topic_listener topic_publisher declare_queues
 
 topic_listener_SOURCES=topic_listener.cpp
-topic_listener_LDADD=$(CLIENT_LIB) -lqpidcommon
+topic_listener_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 topic_publisher_SOURCES=topic_publisher.cpp 
-topic_publisher_LDADD=$(CLIENT_LIB) -lqpidcommon
+topic_publisher_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 declare_queues_SOURCES=declare_queues.cpp
-declare_queues_LDADD=$(CLIENT_LIB) -lqpidcommon
+declare_queues_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 
 examples_DATA=               \
Index: cpp/examples/old_api/xml-exchange/Makefile.am
===================================================================
--- cpp/examples/old_api/xml-exchange/Makefile.am	(revision 1417786)
+++ cpp/examples/old_api/xml-exchange/Makefile.am	(working copy)
@@ -24,13 +24,13 @@
 noinst_PROGRAMS=declare_queues xml_producer listener
 
 declare_queues_SOURCES=declare_queues.cpp
-declare_queues_LDADD=$(CLIENT_LIB) -lqpidcommon
+declare_queues_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 xml_producer_SOURCES=xml_producer.cpp
-xml_producer_LDADD=$(CLIENT_LIB) -lqpidcommon
+xml_producer_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 listener_SOURCES=listener.cpp
-listener_LDADD=$(CLIENT_LIB) -lqpidcommon
+listener_LDADD=$(CLIENT_LIB) $(COMMON_LIB)
 
 EXTRA_DIST=                \
 	README.txt             \
Index: cpp/src/tests/Makefile.am
===================================================================
--- cpp/src/tests/Makefile.am	(revision 1417786)
+++ cpp/src/tests/Makefile.am	(working copy)
@@ -28,6 +28,7 @@
 extra_libs = 
 lib_client = $(abs_builddir)/../libqpidclient.la
 lib_messaging = $(abs_builddir)/../libqpidmessaging.la
+lib_types = $(abs_builddir)/../libqpidtypes.la
 lib_common = $(abs_builddir)/../libqpidcommon.la
 lib_broker = $(abs_builddir)/../libqpidbroker.la
 lib_console = $(abs_builddir)/../libqmfconsole.la
@@ -154,7 +155,7 @@
   receiver.cpp \
   TestOptions.h \
   ConnectionOptions.h
-receiver_LDADD = $(lib_client) -lboost_program_options -lqpidcommon
+receiver_LDADD = $(lib_client) -lboost_program_options $(lib_common)
 
 qpidexectest_PROGRAMS += sender
 sender_SOURCES = \
@@ -162,7 +163,7 @@
   TestOptions.h \
   ConnectionOptions.h \
   Statistics.cpp
-sender_LDADD = $(lib_messaging) -lboost_program_options -lqpidcommon -lqpidtypes -lqpidclient
+sender_LDADD = $(lib_messaging) -lboost_program_options $(lib_common) $(lib_types) $(lib_client)
 
 qpidexectest_PROGRAMS += qpid-receive
 qpid_receive_SOURCES = \
@@ -171,7 +172,7 @@
   ConnectionOptions.h \
   Statistics.h \
   Statistics.cpp
-qpid_receive_LDADD = $(lib_messaging) -lboost_program_options -lqpidcommon -lqpidtypes
+qpid_receive_LDADD = $(lib_messaging) -lboost_program_options $(lib_common) $(lib_types)
 
 qpidexectest_PROGRAMS += qpid-send
 qpid_send_SOURCES = \
@@ -180,42 +181,42 @@
   ConnectionOptions.h \
   Statistics.h \
   Statistics.cpp
-qpid_send_LDADD = $(lib_messaging) -lboost_program_options -lqpidcommon -lqpidtypes
+qpid_send_LDADD = $(lib_messaging) -lboost_program_options $(lib_common) $(lib_types)
 
 qpidexectest_PROGRAMS+=qpid-perftest
 qpid_perftest_SOURCES=qpid-perftest.cpp test_tools.h TestOptions.h ConnectionOptions.h
 qpid_perftest_INCLUDES=$(PUBLIC_INCLUDES)
-qpid_perftest_LDADD=$(lib_client)  -lboost_program_options -lqpidcommon
+qpid_perftest_LDADD=$(lib_client)  -lboost_program_options $(lib_common)
 
 qpidexectest_PROGRAMS+=qpid-txtest
 qpid_txtest_INCLUDES=$(PUBLIC_INCLUDES)
 qpid_txtest_SOURCES=qpid-txtest.cpp  TestOptions.h ConnectionOptions.h
-qpid_txtest_LDADD=$(lib_client)  -lboost_program_options -lqpidcommon
+qpid_txtest_LDADD=$(lib_client)  -lboost_program_options $(lib_common)
 
 qpidexectest_PROGRAMS+=qpid-latency-test
 qpid_latency_test_INCLUDES=$(PUBLIC_INCLUDES)
 qpid_latency_test_SOURCES=qpid-latency-test.cpp TestOptions.h ConnectionOptions.h
-qpid_latency_test_LDADD=$(lib_client)  -lboost_program_options -lqpidcommon
+qpid_latency_test_LDADD=$(lib_client)  -lboost_program_options $(lib_common)
 
 qpidexectest_PROGRAMS+=qpid-client-test
 qpid_client_test_INCLUDES=$(PUBLIC_INCLUDES)
 qpid_client_test_SOURCES=qpid-client-test.cpp TestOptions.h ConnectionOptions.h
-qpid_client_test_LDADD=$(lib_client)  -lboost_program_options -lqpidcommon
+qpid_client_test_LDADD=$(lib_client)  -lboost_program_options $(lib_common)
 
 qpidexectest_PROGRAMS+=qpid-topic-listener
 qpid_topic_listener_INCLUDES=$(PUBLIC_INCLUDES)
 qpid_topic_listener_SOURCES=qpid-topic-listener.cpp TestOptions.h ConnectionOptions.h
-qpid_topic_listener_LDADD=$(lib_client)  -lboost_program_options -lqpidcommon
+qpid_topic_listener_LDADD=$(lib_client)  -lboost_program_options $(lib_common)
 
 qpidexectest_PROGRAMS+=qpid-topic-publisher
 qpid_topic_publisher_INCLUDES=$(PUBLIC_INCLUDES)
 qpid_topic_publisher_SOURCES=qpid-topic-publisher.cpp TestOptions.h ConnectionOptions.h
-qpid_topic_publisher_LDADD=$(lib_client)  -lboost_program_options -lqpidcommon
+qpid_topic_publisher_LDADD=$(lib_client)  -lboost_program_options $(lib_common)
 
 qpidexectest_PROGRAMS+=qpid-ping
 qpid_ping_INCLUDES=$(PUBLIC_INCLUDES)
 qpid_ping_SOURCES=qpid-ping.cpp test_tools.h TestOptions.h ConnectionOptions.h
-qpid_ping_LDADD=$(lib_client) -lboost_program_options -lqpidcommon
+qpid_ping_LDADD=$(lib_client) -lboost_program_options $(lib_common)
 
 #
 # Other test programs
Index: cpp/src/tests/testagent.mk
===================================================================
--- cpp/src/tests/testagent.mk	(revision 1417786)
+++ cpp/src/tests/testagent.mk	(working copy)
@@ -46,6 +46,6 @@
 qpidexectest_PROGRAMS+=testagent
 testagent_CXXFLAGS=$(CXXFLAGS) -Itestagent_gen
 testagent_SOURCES=testagent.cpp $(TESTAGENT_GEN_SRC)
-testagent_LDADD=$(top_builddir)/src/libqmf.la -lqpidcommon -lqpidtypes -lqpidclient
+testagent_LDADD=$(top_builddir)/src/libqmf.la $(top_builddir)/src/libqpidcommon.la $(top_builddir)/src/libqpidtypes.la $(top_builddir)/src/libqpidclient.la
 
 EXTRA_DIST+=testagent.xml

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to