[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