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]