[xmlsec] Build errors with xmlsec-openssl.a under SPARC-Solaris
Rob Mandeville
remande at alum.wpi.edu
Fri Sep 30 03:24:44 PDT 2005
I've been building xmlsec against openssl, and the library I get always
comes out unusable. When I build a program with it later, the linker
complains about the library and I'm stuck with unfilled references.
Here's the setup:
uname -a = SunOS {machinename} 5.9 Generic_7171-07 sun4u sparc
SUNW,Ultra-250
gcc version 3.3.6
xmlsec1 version 1.2.8
libxml2 version 2.6.19
openssl version 0.9.7g
options placed to ./configure on xmlsec1: --prefix={dir}
--with-openssl={dir} --with-libxml={dir} --without-gnutls
--without-libxslt --enable-static-linking=yes --enable-static=yes
--enable-shared=no
I've specifically been statically linking everything I can, so I can
assume as little as possible about the machine I'm deploying this to.
Here's the relevant portion of the gmake -d output:
---BEGIN OUTPUT---
Must remake target `libxmlsec1-openssl.la'.
/bin/bash ../../libtool --mode=link --tag=CC gcc -g -O2 -o
libxmlsec1-openssl.la -rpath /home/robm/devel/local/lib -version-info
3:8:2 app.lo bn.lo ciphers.lo crypto.lo digests.lo evp.lo hmac.lo
kw_aes.lo kw_des.lo kt_rsa.lo signatures.lo symkeys.lo x509.lo
x509vfy.lo ../libxmlsec1.la /home/robm/devel/local/lib/libcrypto.a
-L/home/robm/devel/local/lib -R/home/robm/devel/local/lib -lxml2 -lz
-lpthread -lm -lsocket -lnsl
Putting child 0x00067498 (libxmlsec1-openssl.la) PID 8349 on the chain.
Live child 0x00067498 (libxmlsec1-openssl.la) PID 8349
mkdir .libs
*** Warning: Linking the shared library libxmlsec1-openssl.la against the
*** static library /home/robm/devel/local/lib/libcrypto.a is not portable!
ar cru .libs/libxmlsec1-openssl.a
/home/robm/devel/local/lib/libcrypto.a app.o bn.o ciphers.o crypto.o
digests.o evp.o hmac.o kw_aes.o kw_des.o kt_rsa.o signatures.o symkeys.o
x509.o x509vfy.o /home/robm/devel/local/lib/libcrypto.a
ar: /home/robm/devel/local/lib/libcrypto.a is in archive format -
embedded archives are not allowed
ar: /home/robm/devel/local/lib/libcrypto.a is in archive format -
embedded archives are not allowed
ranlib .libs/libxmlsec1-openssl.a
creating libxmlsec1-openssl.la
(cd .libs && rm -f libxmlsec1-openssl.la && ln -s
../libxmlsec1-openssl.la libxmlsec1-openssl.la)
Got a SIGCHLD; 1 unreaped children.
Reaping winning child 0x00067498 PID 8349
Removing child 0x00067498 PID 8349 from chain.
---END OUTPUT---
So why is it tryng to link the entire libcrypto library to the
libxml-openssl library? Obviously, Sun's "ar" can't put archives into
archives, which is causing the errors and the scrambled library.
I can fix this by removing all references to "libxmlsec1-openssl.a" from
the Makefile, but is there a better way than hand-hacking?
Thanks in advance,
--Rob
More information about the xmlsec
mailing list