libClarens.so.5.31 cannot be built in trunk@41669

This is Ubuntu 10.04.3 LTS i686 (32-bit) with gcc 4.4.3 here …
While trying to compile the current ROOT “trunk@41669”, I get …

g++ -shared -Wl,-soname,libClarens.so.5.31 -m32 -O2 -Wl,--no-undefined -o lib/libClarens.so.5.31 proof/clarens/src/TClarens.o proof/clarens/src/TClProxy.o proof/clarens/src/TClSession.o proof/clarens/src/TEcho.o proof/clarens/src/TGM.o proof/clarens/src/TLM.o proof/clarens/src/TSAM.o proof/clarens/src/TXmlRpc.o proof/clarens/src/G__Clarens.o -L/usr/lib -lcurl -lxmlrpc_client -lxmlrpc -lxmlrpc_util -lxmlrpc_xmlparse -lxmlrpc_xmltok -Llib -lMathCore -Llib -lCore -lCint -ldl proof/clarens/src/TClSession.o: In function `TClSession::InitAuthentication()': TClSession.cxx:(.text+0x671): undefined reference to `OPENSSL_add_all_algorithms_noconf' TClSession.cxx:(.text+0x67c): undefined reference to `OpenSSL_add_all_ciphers' TClSession.cxx:(.text+0x681): undefined reference to `OpenSSL_add_all_digests' TClSession.cxx:(.text+0x686): undefined reference to `ERR_load_crypto_strings' TClSession.cxx:(.text+0x6fd): undefined reference to `BIO_new_file' TClSession.cxx:(.text+0x75b): undefined reference to `PEM_read_bio_X509' TClSession.cxx:(.text+0x771): undefined reference to `BIO_free' TClSession.cxx:(.text+0xa60): undefined reference to `X509_get_pubkey' TClSession.cxx:(.text+0xa78): undefined reference to `X509_free' TClSession.cxx:(.text+0xa80): undefined reference to `EVP_PKEY_get1_RSA' TClSession.cxx:(.text+0xa98): undefined reference to `EVP_PKEY_free' TClSession.cxx:(.text+0xb0a): undefined reference to `BIO_new_file' TClSession.cxx:(.text+0xb78): undefined reference to `PEM_read_bio_RSAPrivateKey' TClSession.cxx:(.text+0xb8e): undefined reference to `BIO_free' TClSession.cxx:(.text+0xd28): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0xd2f): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0xd37): undefined reference to `ERR_reason_error_string' TClSession.cxx:(.text+0xd5f): undefined reference to `BIO_free' TClSession.cxx:(.text+0xdf1): undefined reference to `BIO_new_file' TClSession.cxx:(.text+0xe5e): undefined reference to `BIO_new_file' TClSession.cxx:(.text+0xe68): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0xe71): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0xe79): undefined reference to `ERR_reason_error_string' TClSession.cxx:(.text+0xea7): undefined reference to `X509_free' TClSession.cxx:(.text+0xeb3): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0xebe): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0xec6): undefined reference to `ERR_reason_error_string' TClSession.cxx:(.text+0xef4): undefined reference to `EVP_PKEY_free' TClSession.cxx:(.text+0xfd1): undefined reference to `BIO_new_file' TClSession.cxx:(.text+0x106d): undefined reference to `RSA_free' TClSession.cxx:(.text+0x107f): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0x1086): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0x108e): undefined reference to `ERR_reason_error_string' TClSession.cxx:(.text+0x110d): undefined reference to `BIO_new_file' proof/clarens/src/TClSession.o: In function `TClSession::Create(char const*)': TClSession.cxx:(.text+0x13ed): undefined reference to `SHA1' TClSession.cxx:(.text+0x161a): undefined reference to `BIO_new_mem_buf' TClSession.cxx:(.text+0x1640): undefined reference to `PEM_read_bio_X509' TClSession.cxx:(.text+0x1654): undefined reference to `BIO_free' TClSession.cxx:(.text+0x1670): undefined reference to `X509_get_pubkey' TClSession.cxx:(.text+0x1680): undefined reference to `EVP_PKEY_get1_RSA' TClSession.cxx:(.text+0x16c4): undefined reference to `RSA_size' TClSession.cxx:(.text+0x1700): undefined reference to `RSA_public_decrypt' TClSession.cxx:(.text+0x1763): undefined reference to `RSA_size' TClSession.cxx:(.text+0x17a7): undefined reference to `RSA_private_decrypt' TClSession.cxx:(.text+0x1808): undefined reference to `SHA1' TClSession.cxx:(.text+0x1968): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0x1970): undefined reference to `ERR_reason_error_string' TClSession.cxx:(.text+0x1996): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0x19a1): undefined reference to `ERR_reason_error_string' TClSession.cxx:(.text+0x19c7): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0x19d1): undefined reference to `ERR_reason_error_string' TClSession.cxx:(.text+0x19f7): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0x1a01): undefined reference to `ERR_reason_error_string' TClSession.cxx:(.text+0x1a45): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0x1a51): undefined reference to `ERR_reason_error_string' collect2: ld returned 1 exit status make: *** [lib/libClarens.so] Error 1

[quote=“Pepe Le Pew”]This is Ubuntu 10.04.3 LTS i686 (32-bit) with gcc 4.4.3 here …
While trying to compile the current ROOT “trunk@41669”, I get …

g++ -shared -Wl,-soname,libClarens.so.5.31 -m32 -O2 -Wl,--no-undefined -o lib/libClarens.so.5.31 proof/clarens/src/TClarens.o proof/clarens/src/TClProxy.o proof/clarens/src/TClSession.o proof/clarens/src/TEcho.o proof/clarens/src/TGM.o proof/clarens/src/TLM.o proof/clarens/src/TSAM.o proof/clarens/src/TXmlRpc.o proof/clarens/src/G__Clarens.o -L/usr/lib -lcurl -lxmlrpc_client -lxmlrpc -lxmlrpc_util -lxmlrpc_xmlparse -lxmlrpc_xmltok -Llib -lMathCore -Llib -lCore -lCint -ldl proof/clarens/src/TClSession.o: In function `TClSession::InitAuthentication()': TClSession.cxx:(.text+0x671): undefined reference to `OPENSSL_add_all_algorithms_noconf' TClSession.cxx:(.text+0x67c): undefined reference to `OpenSSL_add_all_ciphers' TClSession.cxx:(.text+0x681): undefined reference to `OpenSSL_add_all_digests' TClSession.cxx:(.text+0x686): undefined reference to `ERR_load_crypto_strings' TClSession.cxx:(.text+0x6fd): undefined reference to `BIO_new_file' TClSession.cxx:(.text+0x75b): undefined reference to `PEM_read_bio_X509' TClSession.cxx:(.text+0x771): undefined reference to `BIO_free' TClSession.cxx:(.text+0xa60): undefined reference to `X509_get_pubkey' TClSession.cxx:(.text+0xa78): undefined reference to `X509_free' TClSession.cxx:(.text+0xa80): undefined reference to `EVP_PKEY_get1_RSA' TClSession.cxx:(.text+0xa98): undefined reference to `EVP_PKEY_free' TClSession.cxx:(.text+0xb0a): undefined reference to `BIO_new_file' TClSession.cxx:(.text+0xb78): undefined reference to `PEM_read_bio_RSAPrivateKey' TClSession.cxx:(.text+0xb8e): undefined reference to `BIO_free' TClSession.cxx:(.text+0xd28): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0xd2f): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0xd37): undefined reference to `ERR_reason_error_string' TClSession.cxx:(.text+0xd5f): undefined reference to `BIO_free' TClSession.cxx:(.text+0xdf1): undefined reference to `BIO_new_file' TClSession.cxx:(.text+0xe5e): undefined reference to `BIO_new_file' TClSession.cxx:(.text+0xe68): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0xe71): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0xe79): undefined reference to `ERR_reason_error_string' TClSession.cxx:(.text+0xea7): undefined reference to `X509_free' TClSession.cxx:(.text+0xeb3): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0xebe): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0xec6): undefined reference to `ERR_reason_error_string' TClSession.cxx:(.text+0xef4): undefined reference to `EVP_PKEY_free' TClSession.cxx:(.text+0xfd1): undefined reference to `BIO_new_file' TClSession.cxx:(.text+0x106d): undefined reference to `RSA_free' TClSession.cxx:(.text+0x107f): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0x1086): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0x108e): undefined reference to `ERR_reason_error_string' TClSession.cxx:(.text+0x110d): undefined reference to `BIO_new_file' proof/clarens/src/TClSession.o: In function `TClSession::Create(char const*)': TClSession.cxx:(.text+0x13ed): undefined reference to `SHA1' TClSession.cxx:(.text+0x161a): undefined reference to `BIO_new_mem_buf' TClSession.cxx:(.text+0x1640): undefined reference to `PEM_read_bio_X509' TClSession.cxx:(.text+0x1654): undefined reference to `BIO_free' TClSession.cxx:(.text+0x1670): undefined reference to `X509_get_pubkey' TClSession.cxx:(.text+0x1680): undefined reference to `EVP_PKEY_get1_RSA' TClSession.cxx:(.text+0x16c4): undefined reference to `RSA_size' TClSession.cxx:(.text+0x1700): undefined reference to `RSA_public_decrypt' TClSession.cxx:(.text+0x1763): undefined reference to `RSA_size' TClSession.cxx:(.text+0x17a7): undefined reference to `RSA_private_decrypt' TClSession.cxx:(.text+0x1808): undefined reference to `SHA1' TClSession.cxx:(.text+0x1968): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0x1970): undefined reference to `ERR_reason_error_string' TClSession.cxx:(.text+0x1996): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0x19a1): undefined reference to `ERR_reason_error_string' TClSession.cxx:(.text+0x19c7): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0x19d1): undefined reference to `ERR_reason_error_string' TClSession.cxx:(.text+0x19f7): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0x1a01): undefined reference to `ERR_reason_error_string' TClSession.cxx:(.text+0x1a45): undefined reference to `ERR_get_error' TClSession.cxx:(.text+0x1a51): undefined reference to `ERR_reason_error_string' collect2: ld returned 1 exit status make: *** [lib/libClarens.so] Error 1[/quote]

You need to link to the library crypto. You can make a modification to the Module.mk or compile on the command line.

[code]Index: proof/clarens/Module.mk

— proof/clarens/Module.mk (revision 41665)
+++ proof/clarens/Module.mk (working copy)
@@ -44,7 +44,7 @@
$(CLARENSLIB): $(CLARENSO) $(CLARENSDO) $(ORDER_) $(MAINLIBS) $(CLARENSLIBDEP)
@$(MAKELIB) $(PLATFORM) $(LD) “$(LDFLAGS)”
“$(SOFLAGS)” libClarens.$(SOEXT) $@ \

  •     "$(CLARENSO) $(CLARENSDO) $(CLARENSLIBS)" \
    
  •     "$(CLARENSO) $(CLARENSDO) $(CLARENSLIBS) -lcrypto" \
       "$(CLARENSLIBEXTRA)"
    

$(CLARENSDS): $(CLARENSH) $(CLARENSL) $(ROOTCINTTMPDEP)[/code]

or

You may have to add either: -L/usr/lib/x86_64-linux-gnu or -L/usr/lib/i386-linux-gnu in front in case that search path is not used.

I believe, one needs to implement the required fix/solution in the “trunk” source code.

Hi,

This have been resolved by revision 41718 of the trunk.

Cheers,
Philippe.

=D>