On 04/22/2010 08:27 AM, Daniel P. Berrange wrote: >> --- a/src/Makefile.am >> +++ b/src/Makefile.am >> @@ -32,7 +32,7 @@ if WITH_NETWORK >> UUID=$(shell uuidgen 2>/dev/null) >> endif >> >> -lib_LTLIBRARIES = libvirt.la >> +lib_LTLIBRARIES = libvirt.la libvirt-qemu.la >> >> moddir = $(libdir)/libvirt/drivers >> mod_LTLIBRARIES = >> @@ -947,6 +947,12 @@ libvirt_test_la_LIBADD = $(libvirt_la_LIBADD) >> libvirt_test_la_LDFLAGS = $(test_LDFLAGS) >> libvirt_test_la_CFLAGS = $(COVERAGE_CFLAGS) >> >> +libvirt_qemu_la_SOURCES = libvirt-qemu.c >> +libvirt_qemu_la_LDFLAGS = $(CYGWIN_EXTRA_LDFLAGS) $(MINGW_EXTRA_LDFLAGS) >> +libvirt_qemu_la_CFLAGS = $(COVERAGE_CFLAGS) >> +libvirt_qemu_la_LIBADD = libvirt_util.la libvirt_driver_qemu.la \ >> + libvirt_driver_remote.la $(CYGWIN_EXTRA_LIBADD) \ >> + ../gnulib/lib/libgnu.la > > This is still going to cause duplicate copies of the code to be > statically linked in. If you just mention 'libvirt.la', then it > should dynamically link to the libvirt.so with no duplication. > You may need to export some more private symbols but that's not > a big issue. I actually tried to do this, but I can't get it to work. It certainly might be my unfamiliarity with the auto* tools, but doing something like: diff --git a/src/Makefile.am b/src/Makefile.am index 3994f00..04aa203 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -989,11 +989,11 @@ libvirt_test_la_LDFLAGS = $(test_LDFLAGS) libvirt_test_la_CFLAGS = $(COVERAGE_CFLAGS) libvirt_qemu_la_SOURCES = libvirt-qemu.c -libvirt_qemu_la_LDFLAGS = $(CYGWIN_EXTRA_LDFLAGS) $(MINGW_EXTRA_LDFLAGS) +libvirt_qemu_la_LDFLAGS = $(VERSION_SCRIPT_FLAGS)$(LIBVIRT_SYMBOL_FILE) \ + -version-info $(LIBVIRT_VERSION_INFO) \ + $(CYGWIN_EXTRA_LDFLAGS) $(MINGW_EXTRA_LDFLAGS) libvirt_qemu_la_CFLAGS = $(COVERAGE_CFLAGS) -libvirt_qemu_la_LIBADD = libvirt_util.la libvirt_driver_qemu.la \ - libvirt_driver_remote.la $(CYGWIN_EXTRA_LIBADD) \ - ../gnulib/lib/libgnu.la +libvirt_qemu_la_LIBADD = libvirt.la libexec_PROGRAMS = diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 746327d..4b88a74 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -706,6 +706,7 @@ virReportSystemErrorFull; virReportOOMErrorFull; virStrerror; virSetError; +virDispatchError; # xml.h @@ -723,3 +724,11 @@ virXPathLongLong; virXPathULongLong; virXPathLongHex; virXPathULongHex; + + +# remote_driver.h +remoteQemuMonitorCommand; + + +# qemu_driver.h +qemuMonitorCommand; diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms index b4db904..22d53f9 100644 --- a/src/libvirt_public.syms +++ b/src/libvirt_public.syms @@ -393,5 +393,8 @@ LIBVIRT_0.8.0 { virDomainSnapshotFree; } LIBVIRT_0.7.7; - +LIBVIRT_0.8.1 { + global: + virDomainQemuMonitorCommand; +} LIBVIRT_0.8.0; Causes the build to fail when linking virsh: CCLD virsh ../src/.libs/libvirt-qemu.so: undefined reference to `qemuMonitorCommand' collect2: ld returned 1 exit status Indeed, if I nm src/.libs/libvirt-qemu.so: [clalance@localhost libvirt (qemu_monitor)]$ nm src/.libs/libvirt-qemu.so | grep Monitor U qemuMonitorCommand U remoteQemuMonitorCommand@@LIBVIRT_PRIVATE_0.8.0 000010b0 T virDomainQemuMonitorCommand Any suggestions about what I'm doing wrong? -- Chris Lalancette -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list