[gnutls-dev] Guile problems in 1.7.12
Simon Josefsson
simon at josefsson.org
Tue Jun 12 15:46:01 CEST 2007
ludo at chbouib.org (Ludovic Courtès) writes:
> Hi,
>
> Simon Josefsson <simon at josefsson.org> writes:
>
>> Did you do a clean build?
>
> Yes.
>
> The link command here is:
>
> /bin/sh ../../libtool --tag=CC --mode=link ccache gcc -std=gnu99
> -D_REENTRANT -D_THREAD_SAFE [... CFLAGS ...] -I../../lgl -I../../lgl
> -I/usr/local/include -pthread -D_REENTRANT -D_THREAD_SAFE
> -Wno-pointer-sign -pthread -lguile -lltdl -L/usr/local/lib -lgmp
> -lcrypt -lm -lltdl -o libguile-gnutls-v-0.la -rpath /usr/local/lib
> libguile_gnutls_v_0_la-core.lo libguile_gnutls_v_0_la-errors.lo
> libguile_gnutls_v_0_la-utils.lo ../../lib/libgnutls.la
> ../../lgl/liblgnu.la
>
> That is, `_LDFLAGS' appear before `_LIBADD', which we don't want. Is it
> the same at your place?
I think I get the same:
/bin/sh ../../libtool --tag=CC --mode=link gcc -std=gnu99 -D_REENTRANT -D_THREAD_SAFE -g -Wall -Wcast-align -W -Wpointer-arith -Wchar-subscripts -Wformat-security -Wno-format-y2k -Wmissing-braces -Winline -Wstrict-prototypes -Wno-unused-parameter -pipe -I/usr/local/include -I/usr/local/include -Wno-strict-prototypes -I../../lgl -I../../lgl -D_REENTRANT -D_THREAD_SAFE -Wno-pointer-sign -lguile -lltdl -lgmp -lcrypt -lm -lltdl -o libguile-gnutls-v-0.la -rpath /usr/local/lib libguile_gnutls_v_0_la-core.lo libguile_gnutls_v_0_la-errors.lo libguile_gnutls_v_0_la-utils.lo ../../lib/libgnutls.la ../../lgl/liblgnu.la
Still, the paths look right for me:
jas at mocca:~/src/gnutls/guile/src$ objdump -p .libs/libguile-gnutls-*.so|grep PATH
RPATH /home/jas/src/gnutls/lib/.libs:/home/jas/src/gnutls/libextra/.libs:/home/jas/src/gnutls/guile/src/.libs:/usr/local/lib
RPATH /home/jas/src/gnutls/lib/.libs:/usr/local/lib
jas at mocca:~/src/gnutls/guile/src$
I also did a clean build (from raw checkout sources, via 'gitco') to
double check.
Maybe we need to compare more. Here is the complete output from
make+rm+make:
jas at mocca:~/src/gnutls/guile/src$ make
make all-am
make[1]: Entering directory `/home/jas/src/gnutls/guile/src'
make[1]: Nothing to be done for `all-am'.
make[1]: Leaving directory `/home/jas/src/gnutls/guile/src'
jas at mocca:~/src/gnutls/guile/src$ rm libguile-gnutls-v-0.la
jas at mocca:~/src/gnutls/guile/src$ make
make all-am
make[1]: Entering directory `/home/jas/src/gnutls/guile/src'
/bin/sh ../../libtool --tag=CC --mode=link gcc -std=gnu99 -D_REENTRANT -D_THREAD_SAFE -g -Wall -Wcast-align -W -Wpointer-arith -Wchar-subscripts -Wformat-security -Wno-format-y2k -Wmissing-braces -Winline -Wstrict-prototypes -Wno-unused-parameter -pipe -I/usr/local/include -I/usr/local/include -Wno-strict-prototypes -I../../lgl -I../../lgl -D_REENTRANT -D_THREAD_SAFE -Wno-pointer-sign -lguile -lltdl -lgmp -lcrypt -lm -lltdl -o libguile-gnutls-v-0.la -rpath /usr/local/lib libguile_gnutls_v_0_la-core.lo libguile_gnutls_v_0_la-errors.lo libguile_gnutls_v_0_la-utils.lo ../../lib/libgnutls.la ../../lgl/liblgnu.la
rm -fr .libs/libguile-gnutls-v-0.a .libs/libguile-gnutls-v-0.la .libs/libguile-gnutls-v-0.lai .libs/libguile-gnutls-v-0.so .libs/libguile-gnutls-v-0.so.0 .libs/libguile-gnutls-v-0.so.0.0.0
gcc -std=gnu99 -shared .libs/libguile_gnutls_v_0_la-core.o .libs/libguile_gnutls_v_0_la-errors.o .libs/libguile_gnutls_v_0_la-utils.o -Wl,--whole-archive ../../lgl/.libs/liblgnu.a -Wl,--no-whole-archive -Wl,--rpath -Wl,/home/jas/src/gnutls/lib/.libs -Wl,--rpath -Wl,/usr/local/lib -Wl,--rpath -Wl,/usr/local/lib /usr/lib/libguile.so /usr/lib/libgmp.so -lcrypt -lm /usr/lib/libltdl.so ../../lib/.libs/libgnutls.so -L/usr/local/lib /usr/local/lib/libgcrypt.so -lnsl /usr/local/lib/libgpg-error.so -Wl,-soname -Wl,libguile-gnutls-v-0.so.0 -o .libs/libguile-gnutls-v-0.so.0.0.0
(cd .libs && rm -f libguile-gnutls-v-0.so.0 && ln -s libguile-gnutls-v-0.so.0.0.0 libguile-gnutls-v-0.so.0)
(cd .libs && rm -f libguile-gnutls-v-0.so && ln -s libguile-gnutls-v-0.so.0.0.0 libguile-gnutls-v-0.so)
rm -fr .libs/libguile-gnutls-v-0.lax
mkdir .libs/libguile-gnutls-v-0.lax
rm -fr .libs/libguile-gnutls-v-0.lax/liblgnu.a
mkdir .libs/libguile-gnutls-v-0.lax/liblgnu.a
(cd .libs/libguile-gnutls-v-0.lax/liblgnu.a && ar x /home/jas/src/gnutls/guile/src/../../lgl/.libs/liblgnu.a)
ar cru .libs/libguile-gnutls-v-0.a libguile_gnutls_v_0_la-core.o libguile_gnutls_v_0_la-errors.o libguile_gnutls_v_0_la-utils.o .libs/libguile-gnutls-v-0.lax/liblgnu.a/asnprintf.o .libs/libguile-gnutls-v-0.lax/liblgnu.a/printf-args.o .libs/libguile-gnutls-v-0.lax/liblgnu.a/gc-libgcrypt.o .libs/libguile-gnutls-v-0.lax/liblgnu.a/dummy.o .libs/libguile-gnutls-v-0.lax/liblgnu.a/read-file.o .libs/libguile-gnutls-v-0.lax/liblgnu.a/vasnprintf.o .libs/libguile-gnutls-v-0.lax/liblgnu.a/gc-pbkdf2-sha1.o .libs/libguile-gnutls-v-0.lax/liblgnu.a/md2.o .libs/libguile-gnutls-v-0.lax/liblgnu.a/printf-parse.o
ranlib .libs/libguile-gnutls-v-0.a
rm -fr .libs/libguile-gnutls-v-0.lax
creating libguile-gnutls-v-0.la
(cd .libs && rm -f libguile-gnutls-v-0.la && ln -s ../libguile-gnutls-v-0.la libguile-gnutls-v-0.la)
/bin/sh ../../libtool --tag=CC --mode=link gcc -std=gnu99 -D_REENTRANT -D_THREAD_SAFE -g -Wall -Wcast-align -W -Wpointer-arith -Wchar-subscripts -Wformat-security -Wno-format-y2k -Wmissing-braces -Winline -Wstrict-prototypes -Wno-unused-parameter -pipe -I/usr/local/include -I/usr/local/include -Wno-strict-prototypes -I../../lgl -I../../lgl -D_REENTRANT -D_THREAD_SAFE -Wno-pointer-sign -lguile -lltdl -lgmp -lcrypt -lm -lltdl -o libguile-gnutls-extra-v-0.la -rpath /usr/local/lib libguile_gnutls_extra_v_0_la-extra.lo ../../lib/libgnutls.la ../../libextra/libgnutls-extra.la ./libguile-gnutls-v-0.la ../../lgl/liblgnu.la
rm -fr .libs/libguile-gnutls-extra-v-0.a .libs/libguile-gnutls-extra-v-0.la .libs/libguile-gnutls-extra-v-0.lai .libs/libguile-gnutls-extra-v-0.so .libs/libguile-gnutls-extra-v-0.so.0 .libs/libguile-gnutls-extra-v-0.so.0.0.0
gcc -std=gnu99 -shared .libs/libguile_gnutls_extra_v_0_la-extra.o -Wl,--whole-archive ../../lgl/.libs/liblgnu.a -Wl,--no-whole-archive -Wl,--rpath -Wl,/home/jas/src/gnutls/lib/.libs -Wl,--rpath -Wl,/home/jas/src/gnutls/libextra/.libs -Wl,--rpath -Wl,/home/jas/src/gnutls/guile/src/.libs -Wl,--rpath -Wl,/usr/local/lib -Wl,--rpath -Wl,/usr/local/lib /usr/lib/libguile.so /usr/lib/libgmp.so -lcrypt -lm /usr/lib/libltdl.so ../../lib/.libs/libgnutls.so ../../libextra/.libs/libgnutls-extra.so ./.libs/libguile-gnutls-v-0.so -L/usr/local/lib /usr/local/lib/libgcrypt.so -lnsl /usr/local/lib/libgpg-error.so -Wl,-soname -Wl,libguile-gnutls-extra-v-0.so.0 -o .libs/libguile-gnutls-extra-v-0.so.0.0.0
(cd .libs && rm -f libguile-gnutls-extra-v-0.so.0 && ln -s libguile-gnutls-extra-v-0.so.0.0.0 libguile-gnutls-extra-v-0.so.0)
(cd .libs && rm -f libguile-gnutls-extra-v-0.so && ln -s libguile-gnutls-extra-v-0.so.0.0.0 libguile-gnutls-extra-v-0.so)
rm -fr .libs/libguile-gnutls-extra-v-0.lax
mkdir .libs/libguile-gnutls-extra-v-0.lax
rm -fr .libs/libguile-gnutls-extra-v-0.lax/liblgnu.a
mkdir .libs/libguile-gnutls-extra-v-0.lax/liblgnu.a
(cd .libs/libguile-gnutls-extra-v-0.lax/liblgnu.a && ar x /home/jas/src/gnutls/guile/src/../../lgl/.libs/liblgnu.a)
ar cru .libs/libguile-gnutls-extra-v-0.a libguile_gnutls_extra_v_0_la-extra.o .libs/libguile-gnutls-extra-v-0.lax/liblgnu.a/asnprintf.o .libs/libguile-gnutls-extra-v-0.lax/liblgnu.a/printf-args.o .libs/libguile-gnutls-extra-v-0.lax/liblgnu.a/gc-libgcrypt.o .libs/libguile-gnutls-extra-v-0.lax/liblgnu.a/dummy.o .libs/libguile-gnutls-extra-v-0.lax/liblgnu.a/read-file.o .libs/libguile-gnutls-extra-v-0.lax/liblgnu.a/vasnprintf.o .libs/libguile-gnutls-extra-v-0.lax/liblgnu.a/gc-pbkdf2-sha1.o .libs/libguile-gnutls-extra-v-0.lax/liblgnu.a/md2.o .libs/libguile-gnutls-extra-v-0.lax/liblgnu.a/printf-parse.o
ranlib .libs/libguile-gnutls-extra-v-0.a
rm -fr .libs/libguile-gnutls-extra-v-0.lax
creating libguile-gnutls-extra-v-0.la
(cd .libs && rm -f libguile-gnutls-extra-v-0.la && ln -s ../libguile-gnutls-extra-v-0.la libguile-gnutls-extra-v-0.la)
make[1]: Leaving directory `/home/jas/src/gnutls/guile/src'
jas at mocca:~/src/gnutls/guile/src$
>> Still, libtool manual recommends to use LIBADD for library dependencies,
>> so if that doesn't work, we should report it as a bug.
>
> It's not that it doesn't work, just that the relative order of
> `_LDFLAGS' and `_LIBADD' is not specified.
I don't think that should matter -- libtool should make sure *.la's are
linked properly. If it has to re-order -rpath's to do that properly if
the order isn't specified, then libtool has to do that.
>> Btw, which libtool version are you using? I think libtool is the one
>> tool that doesn't have version-checks in configure.in.
>
> I'm using Debian's package, version 1.5.22-4.
Same here. Curious.
Btw, do your /etc/ld.so.conf contain /usr/local/lib?
/Simon
More information about the Gnutls-dev
mailing list