Hi, I'm using libtool in a project that builds a few shared libraries, a main program and plugins to the program, all in the same source package.
I've made Debian style packages from my source tree, which requires installation into DESTDIR to work. In the native case, this works: /bin/sh ../libtool --mode=install /usr/bin/install -c interfaces.la '/srv/repo/build/sid/sge_0.0.20100322-1_amd64/debian/tmp/usr/lib/sge/backend' libtool: install: warning: relinking `interfaces.la' libtool: install: (cd /srv/repo/build/sid/sge_0.0.20100322-1_amd64/interfaces; /bin/sh /srv/repo/build/sid/sge_0.0.20100322-1_amd64/libtool --tag CXX --mode=relink x86_64-linux-gnu-g++ -g -O2 -fvisibility=hidden -module -avoid-version -no-undefined -o interfaces.la -rpath /usr/lib/sge/backend linux_network_service.lo plugin.lo network_service.lo ../libsge-agent.la -llazybox -inst-prefix-dir /srv/repo/build/sid/sge_0.0.20100322-1_amd64/debian/tmp) libtool: relink: x86_64-linux-gnu-g++ -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../lib/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.3.2/crtbeginS.o .libs/linux_network_service.o .libs/plugin.o .libs/network_service.o -L/srv/repo/build/sid/sge_0.0.20100322-1_amd64/debian/tmp/usr/lib -L/usr/lib -lsge-agent -llazybox -L/usr/lib/gcc/x86_64-linux-gnu/4.3.2 -L/usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/4.3.2/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../lib/crtn.o -Wl,-soname -Wl,interfaces.so -o .libs/interfaces.so libtool: install: /usr/bin/install -c .libs/interfaces.soT /srv/repo/build/sid/sge_0.0.20100322-1_amd64/debian/tmp/usr/lib/sge/backend/interfaces.so However, cross compiled packages fail here: /bin/sh ../libtool --mode=install /usr/bin/install -c interfaces.la '/srv/repo/build/sid/sge_0.0.20100322-1_armel/debian/tmp/usr/lib/sge/backend' libtool: install: warning: relinking `interfaces.la' libtool: install: (cd /srv/repo/build/sid/sge_0.0.20100322-1_armel/interfaces; /bin/sh /srv/repo/build/sid/sge_0.0.20100322-1_armel/libtool --tag CXX --mode=relink arm-linux-gnueabi-g++ -g -O2 -fvisibility=hidden -module -avoid-version -no-undefined -o interfaces.la -rpath /usr/lib/sge/backend linux_network_service.lo plugin.lo network_service.lo ../libsge-agent.la -llazybox -inst-prefix-dir /srv/repo/build/sid/sge_0.0.20100322-1_armel/debian/tmp) libtool: relink: arm-linux-gnueabi-g++ -shared -nostdlib /usr/lib/gcc/arm-linux-gnueabi/4.3.2/../../../../arm-linux-gnueabi/lib/crti.o /usr/lib/gcc/arm-linux-gnueabi/4.3.2/crtbeginS.o .libs/linux_network_service.o .libs/plugin.o .libs/network_service.o -Wl,-rpath -Wl,/usr/arm-linux-gnueabi/lib -L/srv/repo/build/sid/sge_0.0.20100322-1_armel/debian/tmp/usr/lib -L/usr/lib -lsge-agent -L/srv/repo/build/sid/sge_0.0.20100322-1_armel/debian/tmp/usr/arm-linux-gnueabi/lib -L/usr/arm-linux-gnueabi/lib -llazybox -L/usr/lib/gcc/arm-linux-gnueabi/4.3.2 -L/usr/lib/gcc/arm-linux-gnueabi/4.3.2/../../../../arm-linux-gnueabi/lib -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/arm-linux-gnueabi/4.3.2/crtendS.o /usr/lib/gcc/arm-linux-gnueabi/4.3.2/../../../../arm-linux-gnueabi/lib/crtn.o -Wl,-soname -Wl,interfaces.so -o .libs/interfaces.so /usr/lib/liblazybox.so: file not recognized: File format not recognized collect2: ld returned 1 exit status The problem here appears to be the "-L/usr/lib", which I suspect comes from $libdir. I'm not sure the "installed" $libdir should ever be searched for libraries, unless it also happens to be in the compiler's default path (which it is in the native case). If the "-L/usr/lib" is omitted, relinking works (the proper liblazybox.so is then found in /usr/arm-linux-gnueabi/lib). I can work around the problem by splitting the package, compiling the libraries separately and installing them before building the plugins (in this case, no relinking step is necessary). Simon
signature.asc
Description: Digital signature
_______________________________________________ http://lists.gnu.org/mailman/listinfo/libtool