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

_______________________________________________
xmlsec mailing list
[email protected]
http://www.aleksey.com/mailman/listinfo/xmlsec

Reply via email to