[Libvir] [PATCH] Avoid link errors with "configure --disable-shared".
Jim Meyering
jim at meyering.net
Tue Jan 29 16:01:17 UTC 2008
"Richard W.M. Jones" <rjones at redhat.com> wrote:
> Jim Meyering wrote:
>> I tried to build static binaries in the usual libtool way,
>> via "configure --disable-shared" and got some link errors
>> due to the tests linking only with shared-lib-related files.
>> Here's the fix:
>>
>> Avoid link errors with "configure --disable-shared".
>> * tests/Makefile.am (LDADDS): Add ../src/libvirt.la, so that
>> "configure --disable-shared" no longer provokes link errors.
>>
>> ---
>> tests/Makefile.am | 1 +
>> 1 files changed, 1 insertions(+), 0 deletions(-)
>>
>> diff --git a/tests/Makefile.am b/tests/Makefile.am
>> index dfd9e34..1b5f287 100644
>> --- a/tests/Makefile.am
>> +++ b/tests/Makefile.am
>> @@ -33,6 +33,7 @@ LDADDS = \
>> $(SASL_LIBS) \
>> $(WARN_CFLAGS) \
>> $(LIBVIRT) \
>> + ../src/libvirt.la \
>> ../gnulib/lib/libgnu.la \
>> $(COVERAGE_LDFLAGS)
>
> Not sure I understand this one.
>
> LIBVIRT is defined as:
>
> LIBVIRT = $(wildcard $(top_builddir)/src/.libs/libvirt_la-*.o)
>
> Doesn't that work in the static case too?
Unfortunately not, since the wildcard doesn't match anything:
$ ls -1 ../src/.libs/libvirt*
../src/.libs/libvirt.a
../src/.libs/libvirt.la@
../src/.libs/libvirt.lai
If you want to try to reproduce it yourself, do this:
./configure --disable-shared && make
Without my patch, I get results like this on rawhide:
...
xmlrpc.o: In function `xmlRpcValueMarshal':
/home/meyering/w/co/libvirt/tests/../src/xmlrpc.c:363: undefined reference to `virBufferStrcat'
collect2: ld returned 1 exit status
make[2]: *** [xmlrpctest] Error 1
xml2sexprtest.o: In function `testCompareFiles':
/home/meyering/w/co/libvirt/tests/xml2sexprtest.c:42: undefined reference to `virDomainParseXMLDesc'
collect2: ld returned 1 exit status
make[2]: *** [xml2sexprtest] Error 1
reconnect.o: In function `main':
/home/meyering/w/co/libvirt/tests/reconnect.c:20: undefined reference to `virSetErrorFunc'
/home/meyering/w/co/libvirt/tests/reconnect.c:22: undefined reference to `virConnectOpen'
/home/meyering/w/co/libvirt/tests/reconnect.c:31: undefined reference to `virDomainLookupByID'
/home/meyering/w/co/libvirt/tests/reconnect.c:36: undefined reference to `virDomainFree'
/home/meyering/w/co/libvirt/tests/reconnect.c:37: undefined reference to `virConnectClose'
/home/meyering/w/co/libvirt/tests/reconnect.c:41: undefined reference to `virConnectOpen'
/home/meyering/w/co/libvirt/tests/reconnect.c:46: undefined reference to `virDomainLookupByID'
/home/meyering/w/co/libvirt/tests/reconnect.c:39: undefined reference to `virConnectOpenReadOnly'
/home/meyering/w/co/libvirt/tests/reconnect.c:25: undefined reference to `virConnectOpenReadOnly'
/home/meyering/w/co/libvirt/tests/reconnect.c:51: undefined reference to `virDomainFree'
/home/meyering/w/co/libvirt/tests/reconnect.c:52: undefined reference to `virConnectClose'
collect2: ld returned 1 exit status
make[2]: *** [reconnect] Error 1
make[2]: Leaving directory `/home/meyering/w/co/libvirt/tests'
make[1]: *** [check-recursive] Error 1
make[1]: Leaving directory `/home/meyering/w/co/libvirt/tests'
make: *** [check-recursive] Error 1
I'll see what happens with profiling.
More information about the libvir-list
mailing list