<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Howdy fellow Erlangers,<div class=""><br class=""></div><div class="">I have built many many Erlang systems from source, but today I am having a very unusual problem in that no matter how I build erlang, it fails to link properly to the crypto libraries. </div><div class=""><br class=""></div><div class="">Here is the issue:</div><div class=""><br class=""></div><div class=""><div class=""><font face="Andale Mono" class="">[adam-dev@localhost otp_src_R16B03-1]$ erl</font></div><div class=""><font face="Andale Mono" class="">Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]</font></div><div class=""><font face="Andale Mono" class=""><br class=""></font></div><div class=""><font face="Andale Mono" class="">Eshell V5.10.4  (abort with ^G)</font></div><div class=""><font face="Andale Mono" class="">1> l(crypto).</font></div><div class=""><font face="Andale Mono" class="">{error,on_load_failure}</font></div><div class=""><font face="Andale Mono" class=""><br class=""></font></div><div class=""><font face="Andale Mono" class="">=ERROR REPORT==== 2-Feb-2015::18:26:50 ===</font></div><div class=""><font face="Andale Mono" class="">Unable to load crypto library. Failed with error:</font></div><div class=""><font face="Andale Mono" class="">"load_failed, Failed to load NIF library: '/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/priv/lib/crypto.so: undefined symbol: EC_GROUP_new_curve_GF2m'"</font></div><div class=""><font face="Andale Mono" class="">OpenSSL might not be installed on this system.</font></div><div class=""><font face="Andale Mono" class=""><br class=""></font></div><div class=""><font face="Andale Mono" class="">=ERROR REPORT==== 2-Feb-2015::18:26:50 ===</font></div><div class=""><font face="Andale Mono" class="">The on_load function for module crypto returned {error,</font></div><div class=""><font face="Andale Mono" class="">                                                 {load_failed,</font></div><div class=""><font face="Andale Mono" class="">                                                  "Failed to load NIF library: '/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/priv/lib/crypto.so: undefined symbol: EC_GROUP_new_curve_GF2m'”}}</font></div></div><div class=""><br class=""></div><div class="">The shared library is there:</div><div class=""><br class=""></div><div class=""><div class=""><font face="Andale Mono" class="">[adam-dev@localhost otp_src_R16B03-1]$ ls -la /home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/priv/lib/crypto.so</font></div><div class=""><font face="Andale Mono" class="">-rwxr-xr-x. 1 adam-dev adam-dev 172170 Feb  2 18:25 /home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/priv/lib/crypto.so</font></div></div><div class=""><br class=""></div><div class="">I did find this in the log:</div><div class=""><br class=""></div><div class=""><div class=""><font face="Andale Mono" class="">gcc -c -o ../priv/obj/x86_64-unknown-linux-gnu/crypto.o -Werror=return-type  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wdeclaration-after-statement  -DUSE_THREADS -D_THREAD_SAFE -D_REENTRANT -DPOSIX_THREADS -D_POSIX_THREAD_SAFE_FUNCTIONS -m64 -g -O2 -I/home/adam-dev/erlang/otp_src_R16B03-1/erts/x86_64-unknown-linux-gnu   -fno-tree-copyrename  -D_GNU_SOURCE -fPIC -DHAVE_DYNAMIC_CRYPTO_LIB -I/usr/include -I/usr/include -I/home/adam-dev/erlang/otp_src_R16B03-1/erts/emulator/beam -I/home/adam-dev/erlang/otp_src_R16B03-1/erts/include -I/home/adam-dev/erlang/otp_src_R16B03-1/erts/include/x86_64-unknown-linux-gnu -I/home/adam-dev/erlang/otp_src_R16B03-1/erts/include/internal -I/home/adam-dev/erlang/otp_src_R16B03-1/erts/include/internal/x86_64-unknown-linux-gnu -I/home/adam-dev/erlang/otp_src_R16B03-1/erts/emulator/sys/unix crypto.c</font></div><div class=""><font face="Andale Mono" class="">crypto.c: In function ‘ec_key_new’:</font></div><div class=""><font face="Andale Mono" class="">crypto.c:3018: warning: implicit declaration of function ‘EC_GROUP_new_curve_GF2m’</font></div><div class=""><font face="Andale Mono" class="">crypto.c:3018: warning: assignment makes pointer from integer without a cast</font></div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">The rest of the details. I have a brand spanking new CentOS install:</div><div class=""><br class=""></div><div class=""><div class=""><font face="Andale Mono" class="">[adam-dev@localhost otp_src_R16B03-1]$ uname -a</font></div><div class=""><font face="Andale Mono" class="">Linux localhost.localdomain 2.6.32-279.14.1.el6.x86_64 #1 SMP Tue Nov 6 23:43:09 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux</font></div></div><div class=""><br class=""></div><div class="">Here is the installation information for openssl and openssl-devel:</div><div class=""><br class=""></div><div class=""><div class=""><font face="Andale Mono" class="">[adam-dev@localhost otp_src_R16B03-1]$ yum info openssl</font></div><div class=""><font face="Andale Mono" class="">Loaded plugins: fastestmirror</font></div><div class=""><font face="Andale Mono" class="">Loading mirror speeds from cached hostfile</font></div><div class=""><font face="Andale Mono" class=""> * base: <a href="http://mirror.keystealth.org" class="">mirror.keystealth.org</a></font></div><div class=""><font face="Andale Mono" class=""> * extras: <a href="http://mirror.hostduplex.com" class="">mirror.hostduplex.com</a></font></div><div class=""><font face="Andale Mono" class=""> * updates: <a href="http://mirror.pac-12.org" class="">mirror.pac-12.org</a></font></div><div class=""><font face="Andale Mono" class="">Installed Packages</font></div><div class=""><font face="Andale Mono" class="">Name        : openssl</font></div><div class=""><font face="Andale Mono" class="">Arch        : x86_64</font></div><div class=""><font face="Andale Mono" class="">Version     : 1.0.1e</font></div><div class=""><font face="Andale Mono" class="">Release     : 30.el6_6.5</font></div><div class=""><font face="Andale Mono" class="">Size        : 4.0 M</font></div><div class=""><font face="Andale Mono" class="">Repo        : installed</font></div><div class=""><font face="Andale Mono" class="">From repo   : updates</font></div><div class=""><font face="Andale Mono" class="">Summary     : A general purpose cryptography library with TLS implementation</font></div><div class=""><font face="Andale Mono" class="">URL         : <a href="http://www.openssl.org/" class="">http://www.openssl.org/</a></font></div><div class=""><font face="Andale Mono" class="">License     : OpenSSL</font></div><div class=""><font face="Andale Mono" class="">Description : The OpenSSL toolkit provides support for secure communications between</font></div><div class=""><font face="Andale Mono" class="">            : machines. OpenSSL includes a certificate management tool and shared</font></div><div class=""><font face="Andale Mono" class="">            : libraries which provide various cryptographic algorithms and</font></div><div class=""><font face="Andale Mono" class="">            : protocols.</font></div><div class=""><font face="Andale Mono" class=""><br class=""></font></div><div class=""><font face="Andale Mono" class="">Available Packages</font></div><div class=""><font face="Andale Mono" class="">Name        : openssl</font></div><div class=""><font face="Andale Mono" class="">Arch        : i686</font></div><div class=""><font face="Andale Mono" class="">Version     : 1.0.1e</font></div><div class=""><font face="Andale Mono" class="">Release     : 30.el6_6.5</font></div><div class=""><font face="Andale Mono" class="">Size        : 1.5 M</font></div><div class=""><font face="Andale Mono" class="">Repo        : updates</font></div><div class=""><font face="Andale Mono" class="">Summary     : A general purpose cryptography library with TLS implementation</font></div><div class=""><font face="Andale Mono" class="">URL         : <a href="http://www.openssl.org/" class="">http://www.openssl.org/</a></font></div><div class=""><font face="Andale Mono" class="">License     : OpenSSL</font></div><div class=""><font face="Andale Mono" class="">Description : The OpenSSL toolkit provides support for secure communications between</font></div><div class=""><font face="Andale Mono" class="">            : machines. OpenSSL includes a certificate management tool and shared</font></div><div class=""><font face="Andale Mono" class="">            : libraries which provide various cryptographic algorithms and</font></div><div class=""><font face="Andale Mono" class="">            : protocols.</font></div></div><div class=""><br class=""></div><div class=""><div class=""><font face="Andale Mono" class="">[adam-dev@localhost otp_src_R16B03-1]$ yum info openssl-devel</font></div><div class=""><font face="Andale Mono" class="">Loaded plugins: fastestmirror</font></div><div class=""><font face="Andale Mono" class="">Loading mirror speeds from cached hostfile</font></div><div class=""><font face="Andale Mono" class=""> * base: <a href="http://mirror.keystealth.org" class="">mirror.keystealth.org</a></font></div><div class=""><font face="Andale Mono" class=""> * extras: <a href="http://mirror.hostduplex.com" class="">mirror.hostduplex.com</a></font></div><div class=""><font face="Andale Mono" class=""> * updates: <a href="http://mirror.pac-12.org" class="">mirror.pac-12.org</a></font></div><div class=""><font face="Andale Mono" class="">Installed Packages</font></div><div class=""><font face="Andale Mono" class="">Name        : openssl-devel</font></div><div class=""><font face="Andale Mono" class="">Arch        : x86_64</font></div><div class=""><font face="Andale Mono" class="">Version     : 1.0.1e</font></div><div class=""><font face="Andale Mono" class="">Release     : 30.el6_6.5</font></div><div class=""><font face="Andale Mono" class="">Size        : 2.2 M</font></div><div class=""><font face="Andale Mono" class="">Repo        : installed</font></div><div class=""><font face="Andale Mono" class="">From repo   : updates</font></div><div class=""><font face="Andale Mono" class="">Summary     : Files for development of applications which will use OpenSSL</font></div><div class=""><font face="Andale Mono" class="">URL         : <a href="http://www.openssl.org/" class="">http://www.openssl.org/</a></font></div><div class=""><font face="Andale Mono" class="">License     : OpenSSL</font></div><div class=""><font face="Andale Mono" class="">Description : OpenSSL is a toolkit for supporting cryptography. The openssl-devel</font></div><div class=""><font face="Andale Mono" class="">            : package contains include files needed to develop applications which</font></div><div class=""><font face="Andale Mono" class="">            : support various cryptographic algorithms and protocols.</font></div><div class=""><font face="Andale Mono" class=""><br class=""></font></div><div class=""><font face="Andale Mono" class="">Available Packages</font></div><div class=""><font face="Andale Mono" class="">Name        : openssl-devel</font></div><div class=""><font face="Andale Mono" class="">Arch        : i686</font></div><div class=""><font face="Andale Mono" class="">Version     : 1.0.1e</font></div><div class=""><font face="Andale Mono" class="">Release     : 30.el6_6.5</font></div><div class=""><font face="Andale Mono" class="">Size        : 1.2 M</font></div><div class=""><font face="Andale Mono" class="">Repo        : updates</font></div><div class=""><font face="Andale Mono" class="">Summary     : Files for development of applications which will use OpenSSL</font></div><div class=""><font face="Andale Mono" class="">URL         : <a href="http://www.openssl.org/" class="">http://www.openssl.org/</a></font></div><div class=""><font face="Andale Mono" class="">License     : OpenSSL</font></div><div class=""><font face="Andale Mono" class="">Description : OpenSSL is a toolkit for supporting cryptography. The openssl-devel</font></div><div class=""><font face="Andale Mono" class="">            : package contains include files needed to develop applications which</font></div><div class=""><font face="Andale Mono" class="">            : support various cryptographic algorithms and protocols.</font></div></div><div class=""><br class=""></div><div class="">And here is my configuration:</div><div class=""><br class=""></div><div class=""><font face="Andale Mono" class="">[adam-dev@localhost otp_src_R16B03-1]$ ./configure --prefix=/home/adam-dev/erlang/R16B03-1 --enable-ssl=yes --enable-kernel-poll --enable-smp-support --enable-threads --with-odbc=yes --enable-m64-build</font></div><div class=""><br class=""></div><div class="">Configure finds everything ok. Here is snippet of the output relating to ssl:</div><div class=""><br class=""></div><div class=""><div class=""><font face="Andale Mono" class="">checking for OpenSSL >= 0.9.7 in standard locations... /usr</font></div><div class=""><font face="Andale Mono" class="">checking for OpenSSL kerberos 5 support... yes</font></div><div class=""><font face="Andale Mono" class="">checking for krb5.h in standard locations... found in /usr/include</font></div><div class=""><font face="Andale Mono" class="">checking for ssl runtime library path to use... /usr/lib64:/usr/local/lib64:/usr/sfw/lib64:/opt/local/lib64:/usr/pkg/lib64:/usr/local/openssl/lib64:/usr/lib/openssl/lib64:/usr/openssl/lib64:/usr/local/ssl/lib64:/usr/lib/ssl/lib64:/usr/ssl/lib64:/usr/local/lib:/usr/sfw/lib:/usr/lib:/opt/local/lib:/usr/pkg/lib:/usr/local/openssl/lib:/usr/lib/openssl/lib:/usr/openssl/lib:/usr/local/ssl/lib:/usr/lib/ssl/lib:/usr/ssl/lib</font></div></div><div class=""><br class=""></div><div class="">make and make install complete without error. Another snippet:</div><div class=""><br class=""></div><div class=""><div class=""><font face="Andale Mono" class="">=== Entering application crypto</font></div><div class=""><font face="Andale Mono" class="">make[3]: Entering directory `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/src'</font></div><div class=""><font face="Andale Mono" class="">make -w RELEASE_PATH="/home/adam-dev/erlang/R16B03-1/lib/erlang"   release_spec</font></div><div class=""><font face="Andale Mono" class="">make[4]: Entering directory `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/src'</font></div><div class=""><font face="Andale Mono" class="">/usr/bin/install -c -d "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/src"</font></div><div class=""><font face="Andale Mono" class="">/usr/bin/install -c -m 644 crypto_app.erl crypto.erl crypto_server.erl crypto_sup.erl "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/src"</font></div><div class=""><font face="Andale Mono" class="">/usr/bin/install -c -d "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/ebin"</font></div><div class=""><font face="Andale Mono" class="">/usr/bin/install -c -m 644 ../ebin/crypto_app.beam ../ebin/crypto.beam ../ebin/crypto_server.beam ../ebin/crypto_sup.beam ../ebin/crypto.app \</font></div><div class=""><font face="Andale Mono" class=""><span class="Apple-tab-span" style="white-space:pre">          </span>../ebin/crypto.appup "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/ebin"</font></div><div class=""><font face="Andale Mono" class="">make[4]: Leaving directory `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/src'</font></div><div class=""><font face="Andale Mono" class="">make[3]: Leaving directory `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/src'</font></div><div class=""><font face="Andale Mono" class="">make[3]: Entering directory `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/c_src'</font></div><div class=""><font face="Andale Mono" class="">make -f x86_64-unknown-linux-gnu/Makefile release</font></div><div class=""><font face="Andale Mono" class="">make[4]: Entering directory `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/c_src'</font></div><div class=""><font face="Andale Mono" class="">make -w RELEASE_PATH="/home/adam-dev/erlang/R16B03-1/lib/erlang"   release_spec</font></div><div class=""><font face="Andale Mono" class="">make[5]: Entering directory `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/c_src'</font></div><div class=""><font face="Andale Mono" class="">make -f x86_64-unknown-linux-gnu/Makefile release_spec</font></div><div class=""><font face="Andale Mono" class="">make[6]: Entering directory `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/c_src'</font></div><div class=""><font face="Andale Mono" class="">/usr/bin/install -c -d "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/priv/obj"</font></div><div class=""><font face="Andale Mono" class="">/usr/bin/install -c -d "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/priv/lib"</font></div><div class=""><font face="Andale Mono" class="">/usr/bin/install -c -m 644 ../priv/Makefile "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/priv/obj"</font></div><div class=""><font face="Andale Mono" class="">/usr/bin/install -c ../priv/obj/x86_64-unknown-linux-gnu/crypto.o "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/priv/obj"</font></div><div class=""><font face="Andale Mono" class="">/usr/bin/install -c ../priv/lib/x86_64-unknown-linux-gnu/crypto.so "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/priv/lib"</font></div><div class=""><font face="Andale Mono" class="">/usr/bin/install -c ../priv/obj/x86_64-unknown-linux-gnu/crypto_callback.o "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/priv/obj"</font></div><div class=""><font face="Andale Mono" class="">/usr/bin/install -c ../priv/lib/x86_64-unknown-linux-gnu/crypto_callback.so "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/priv/lib"</font></div><div class=""><font face="Andale Mono" class="">make[6]: Leaving directory `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/c_src'</font></div><div class=""><font face="Andale Mono" class="">make[5]: Leaving directory `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/c_src'</font></div><div class=""><font face="Andale Mono" class="">make[4]: Leaving directory `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/c_src'</font></div><div class=""><font face="Andale Mono" class="">make[3]: Leaving directory `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/c_src'</font></div><div class=""><font face="Andale Mono" class="">make[3]: Entering directory `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/doc/src'</font></div><div class=""><font face="Andale Mono" class="">make -w RELEASE_PATH="/home/adam-dev/erlang/R16B03-1/lib/erlang"   release_spec</font></div><div class=""><font face="Andale Mono" class="">make[4]: Entering directory `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/doc/src'</font></div><div class=""><font face="Andale Mono" class="">make[4]: Nothing to be done for `release_spec'.</font></div><div class=""><font face="Andale Mono" class="">make[4]: Leaving directory `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/doc/src'</font></div><div class=""><font face="Andale Mono" class="">make[3]: Leaving directory `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/doc/src'</font></div><div class=""><font face="Andale Mono" class="">=== Leaving application crypto</font></div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">Any help would be greatly appreciated!</div><div class=""><br class=""></div><div class="">Cheers,</div><div class="">Bryan</div><div class=""><br class=""><div apple-content-edited="true" class="">
<div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: 2; text-align: -webkit-auto; text-indent: 0px; widows: 2; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">----</div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Bryan Hughes</div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><b class="">Go Factory</b></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="http://www.go-factory.net" class="">http://www.go-factory.net</a></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="orphans: auto; widows: auto;" class=""><i class="">Connecting the Internet of Things</i></div></div></div>
</div>
<br class=""></div></body></html>