gnutls-devel
[Top][All Lists]
Advanced

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

Re: [gnutls-dev] Problem linking gnutls 1.0.16


From: Bob Friesenhahn
Subject: Re: [gnutls-dev] Problem linking gnutls 1.0.16
Date: Sat, 24 Jul 2004 15:38:25 -0500 (CDT)

On Sat, 24 Jul 2004, Nikos Mavroyanopoulos wrote:

On Thursday 22 July 2004 04:07, Bob Friesenhahn wrote:

I am building gnutls and friends on a Solaris 9 system with gcc 3.4.1,

The whole process has been quite painful.  In some places I had to
edit Makefile.am files and add missing library dependencies.  It seems
that perhaps gnutls relies on some automatic library dependency
support provided by the OS.  I have installed libgpg-error-0.7,
libgcrypt-1.2.0, libtasn1-0.2.10, and opencdk-0.5.5.
I am now down to the final link stage but am stuck at the following
error.  Can someone please help?
Could you send me the line that the final linking of libgnutls.so
is done? It seems that some objects (such as lib/x509/rfc2818_hostname)
do not get included. Have you used any configure options?

/bin/sh ../libtool --mode=link gcc-3.4.1 -O2 -D_REENTRANT -D_THREAD_SAFE -O2 -finline-functions -I/usr/local/include -I/usr/local/include -L/usr/local/lib -R/usr/local/lib -o gnutls-serv serv-gaa.o serv.o common.o ../lib/libgnutls.la ../libextra/libgnutls-extra.la -L/usr/local/lib -lgcrypt -L/usr/local/lib -lgpg-error -lz -lnsl -lsocket -L/usr/local/lib -lopencdk -L/usr/local/lib -lgcrypt -L/usr/local/lib -lgpg-error -L/usr/local/lib -ltasn1 -lz -lz gcc-3.4.1 -O2 -D_REENTRANT -D_THREAD_SAFE -O2 -finline-functions -I/usr/local/include -I/usr/local/include -o .libs/gnutls-serv serv-gaa.o serv.o common.o -L/usr/local/lib ../lib/.libs/libgnutls ../libextra/.libs/libgnutls-extra /home/bfriesen/src/im/gnutls-1.0.16/lib/.libs/libgnutls /usr/local/lib/libopencdk.so /usr/local/lib/libgcrypt -lnsl -lsocket /usr/local/lib/libgpg-error.so /usr/local/lib/libintl.so /usr/local/lib/libiconv.so -lc /usr/local/lib/libtasn1.so -lz -R/usr/local/lib ld: warning: file /home/bfriesen/src/im/gnutls-1.0.16/lib/.libs/libgnutls: linked to ../lib/.libs/libgnutls: attempted multiple inclusion of file
Undefined                       first referenced
 symbol                             in file
gnutls_x509_crt_check_hostname      common.o
gnutls_openpgp_key_to_xml           common.o
_gnutls_hostname_compare            ../libextra/.libs/libgnutls-extra
gnutls_x509_crt_to_xml              common.o
ld: fatal: Symbol referencing errors. No output written to .libs/gnutls-serv
collect2: ld returned 1 exit status
gmake[3]: *** [gnutls-serv] Error 1
gmake[3]: Leaving directory `/home/bfriesen/src/im/gnutls-1.0.16/src'
gmake[2]: *** [all-recursive] Error 1
gmake[2]: Leaving directory `/home/bfriesen/src/im/gnutls-1.0.16/src'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/home/bfriesen/src/im/gnutls-1.0.16'
gmake: *** [all] Error 2

/home/bfriesen/src/im/gnutls-1.0.16/lib/.libs/libgnutls: linked to
../lib/.libs/libgnutls: attempted multiple inclusion of file
It seems however that the library is created. Could you check
the library (with nm) for the following symbols? Does the linking
of other programs work?

Nm shows that lib/x509/.libs/libx509.a contains the symbols
gnutls_x509_crt_check_hostname, _gnutls_hostname_compare, and
gnutls_x509_crt_to_xml.

If this library is used as a libtool convenience library, then it is
likely the problem is due due to multiple occurances of common.o in
the package:

blade:src/im/gnutls-1.0.16% find . -name 'common.o' -print
./lib/x509/.libs/common.o
./lib/x509/common.o
./src/common.o

Objects from libtool convenience libraries are extracted to individual .o files prior to use so it is likely that this is why the linker fails to see the symbols (two common.o files in the same library, oops!).

I did have to update a number of Makefile.am files in packages gnutils depends on since the library dependencies were sometimes not completely listed. Apparently the Linux linker will silently insert library dependencies (recorded in the .so file), but this is not true of most platforms so it is necessary to tell libtool about all dependencies so they can be recorded in the .la file.

Bob
======================================
Bob Friesenhahn
address@hidden
http://www.simplesystems.org/users/bfriesen



reply via email to

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