libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

libtool relinks against system libraries during make DESTDIR=... install


From: Peter Volkov
Subject: libtool relinks against system libraries during make DESTDIR=... install
Date: Mon, 20 Jun 2011 17:55:42 +0400

Hi. I'm looking for suggestion how to fix following issue:

I'm building wireshark-1.6.0 package which contains (among others)
following libraries:

wsutil/libwsutil.la (dlname='libwsutil.so.1')
wiretap/libwiretap.la

wiretap/Makefile.am has following lines to link with libwsutil.la:

libwiretap_la_LIBADD = libwiretap_generated.la 
${top_builddir}/wsutil/libwsutil.la $(GLIB_LIBS)
libwiretap_la_DEPENDENCIES = libwiretap_generated.la 
${top_builddir}/wsutil/libwsutil.la wtap.sym

At the same time my system has wireshark-1.4.7 installed and it also
have both libs, but with different versions - for this question it's
important that I have libwsutil.so.0 installed in my system. Now if try
to do staged install for libwiretap like this:

$ cd wsutil/ && make DESTDIR=/tmp/test install
$ cd ../wiretap && make DESTDIR=/tmp/test install

libtool relinks libwiretap.so against _system_ libwsutil.so:

make[1]: Entering directory 
`/var/tmp/portage/net-analyzer/wireshark-1.6.0/work/wireshark-1.6.0/wiretap'
test -z "/usr/lib64" || mkdir -p -- "/tmp/test/usr/lib64"
 /bin/sh ../libtool --mode=install /usr/bin/install -c  'libwiretap.la' 
'/tmp/test/usr/lib64/libwiretap.la'
libtool: install: warning: relinking `libwiretap.la'
libtool: install: (cd 
/var/tmp/portage/net-analyzer/wireshark-1.6.0/work/wireshark-1.6.0/wiretap; 
/bin/sh 
/var/tmp/portage/net-analyzer/wireshark-1.6.0/work/wireshark-1.6.0/libtool  
--tag CC --mode=relink x86_64-pc-linux-gnu-gcc -DINET6 
"-D_U_=__attribute__((unused))" -O2 -pipe -march=k8 -mtune=k8 -ggdb -Wall -W 
-Wextra -Wdeclaration-after-statement -Wendif-labels -Wpointer-arith 
-Wno-pointer-sign -Warray-bounds -Wcast-align -Wformat-security 
-fexcess-precision=fast -I/usr/include -I/usr/local/include -pthread 
-I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 
-I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 
-I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 
-I/usr/include/freetype2 -I/usr/include/libpng14 -I/usr/include/libdrm 
-I/usr/include -Wl,--as-needed,--hash-style=gnu -Wl,--as-needed -L/usr/lib 
-L/usr/local/lib -L/usr/local/lib -L/usr/local/lib -o libwiretap.la -rpath 
/usr/lib64 -version-info 1:0:0 -export-symbols wtap.sym [cutted many .lo files] 
libwiretap_la-wtap.lo libwiretap_generated.la ../wsutil/libwsutil.la -pthread 
-Wl,--export-dynamic -lgthread-2.0 -lgmodule-2.0 -lrt -lglib-2.0 -lz 
-inst-prefix-dir /tmp/test)
libtool: relink: warning: `/usr/lib/libgthread-2.0.la' seems to be moved
libtool: relink: warning: `/usr/lib/libgmodule-2.0.la' seems to be moved
libtool: relink: warning: `/usr/lib/libglib-2.0.la' seems to be moved
libtool: relink: echo "{ global:" > .libs/libwiretap.ver
libtool: relink:  cat wtap.sym | sed -e "s/\(.*\)/\1;/" >> .libs/libwiretap.ver
libtool: relink:  echo "local: *; };" >> .libs/libwiretap.ver
libtool: relink:  x86_64-pc-linux-gnu-gcc -shared  -fPIC -DPIC [cutted many .o 
files] .libs/libwiretap_la-wtap.o  -Wl,--whole-archive 
./.libs/libwiretap_generated.a -Wl,--no-whole-archive  -L/usr/lib 
-L/usr/local/lib -L/tmp/test/usr/lib64 -L/usr/lib64 -lwsutil -lgthread-2.0 
-lpthread -lgmodule-2.0 -ldl -lglib-2.0 -lrt -lz  -O2 -march=k8 -mtune=k8 
-pthread -Wl,--as-needed -Wl,--hash-style=gnu -Wl,--as-needed -pthread 
-Wl,--export-dynamic   -pthread -Wl,-soname -Wl,libwiretap.so.1 
-Wl,-version-script -Wl,.libs/libwiretap.ver -o .libs/libwiretap.so.1.0.0
libtool: install: /usr/bin/install -c .libs/libwiretap.so.1.0.0T 
/tmp/test/usr/lib64/libwiretap.so.1.0.0
libtool: install: (cd /tmp/test/usr/lib64 && { ln -s -f libwiretap.so.1.0.0 
libwiretap.so.1 || { rm -f libwiretap.so.1 && ln -s libwiretap.so.1.0.0 
libwiretap.so.1; }; })
libtool: install: (cd /tmp/test/usr/lib64 && { ln -s -f libwiretap.so.1.0.0 
libwiretap.so || { rm -f libwiretap.so && ln -s libwiretap.so.1.0.0 
libwiretap.so; }; })
libtool: install: /usr/bin/install -c .libs/libwiretap.lai 
/tmp/test/usr/lib64/libwiretap.la
libtool: install: warning: remember to run `libtool --finish /usr/lib64'
make[1]: Nothing to be done for `install-data-am'.
make[1]: Leaving directory 
`/var/tmp/portage/net-analyzer/wireshark-1.6.0/work/wireshark-1.6.0/wiretap'

Why libtool prepends -L/usr/lib -L/usr/local/lib before
-L/tmp/test/usr/lib64? How to force libtool link agains library inside
DESTDIR (library bundled with package) instead of system one?

libtool --config is in attachment.

Thank you in advance for any hints,
--
Peter.

Attachment: libtool-config.txt
Description: Text document


reply via email to

[Prev in Thread] Current Thread [Next in Thread]