[erlang-questions] Building erlang R1603-1 on CentOS - unable to load crypto library

Luis Rascão luis.rascao@REDACTED
Tue Feb 3 10:34:24 CET 2015


Another option is to build OpenSSL and then statically link it with Erlang
of your choosing
(--with-ssl=/usr/local/openssl/ --disable-dynamic-ssl-lib)
I would really like to know why would someone add a OpenSSL package with
elliptic curves disabled...

On Tue, Feb 3, 2015 at 3:00 AM, Bryan <bryan@REDACTED> wrote:

> Thank you so much - you rock! You saved me a headache and I really
> appreciate it.
>
> Adding the group back in, for prosperity reasons if someone is searching
> the list.
>
> Cheers,
> Bryan
>
> ----
>
> Bryan Hughes
> Go Factory
>
> http://www.go-factory.net
>
> Connecting the Internet of Things
>
> > On Feb 2, 2015, at 6:57 PM, Vance Shipley <vances@REDACTED> wrote:
> >
> > This problem is described here:
> >
> >
> http://erlang.org/pipermail/erlang-questions/2013-December/076327.html
> >
> > Configure with:
> >
> >     CFLAGS="-DOPENSSL_NO_EC=1" ./configure
> >
> >
> >
> > On Tue, Feb 3, 2015 at 8:06 AM, Bryan <bryan@REDACTED> wrote:
> >> Howdy fellow Erlangers,
> >>
> >> 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.
> >>
> >> Here is the issue:
> >>
> >> [adam-dev@REDACTED otp_src_R16B03-1]$ erl
> >> Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:8:8]
> [async-threads:10]
> >> [hipe] [kernel-poll:false]
> >>
> >> Eshell V5.10.4  (abort with ^G)
> >> 1> l(crypto).
> >> {error,on_load_failure}
> >>
> >> =ERROR REPORT==== 2-Feb-2015::18:26:50 ===
> >> Unable to load crypto library. Failed with error:
> >> "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'"
> >> OpenSSL might not be installed on this system.
> >>
> >> =ERROR REPORT==== 2-Feb-2015::18:26:50 ===
> >> The on_load function for module crypto returned {error,
> >>                                                 {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'”}}
> >>
> >> The shared library is there:
> >>
> >> [adam-dev@REDACTED otp_src_R16B03-1]$ ls -la
> >>
> /home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/priv/lib/crypto.so
> >> -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
> >>
> >> I did find this in the log:
> >>
> >> 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
> >> crypto.c: In function ‘ec_key_new’:
> >> crypto.c:3018: warning: implicit declaration of function
> >> ‘EC_GROUP_new_curve_GF2m’
> >> crypto.c:3018: warning: assignment makes pointer from integer without a
> cast
> >>
> >>
> >>
> >> The rest of the details. I have a brand spanking new CentOS install:
> >>
> >> [adam-dev@REDACTED otp_src_R16B03-1]$ uname -a
> >> 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
> >>
> >> Here is the installation information for openssl and openssl-devel:
> >>
> >> [adam-dev@REDACTED otp_src_R16B03-1]$ yum info openssl
> >> Loaded plugins: fastestmirror
> >> Loading mirror speeds from cached hostfile
> >> * base: mirror.keystealth.org
> >> * extras: mirror.hostduplex.com
> >> * updates: mirror.pac-12.org
> >> Installed Packages
> >> Name        : openssl
> >> Arch        : x86_64
> >> Version     : 1.0.1e
> >> Release     : 30.el6_6.5
> >> Size        : 4.0 M
> >> Repo        : installed
> >> From repo   : updates
> >> Summary     : A general purpose cryptography library with TLS
> implementation
> >> URL         : http://www.openssl.org/
> >> License     : OpenSSL
> >> Description : The OpenSSL toolkit provides support for secure
> communications
> >> between
> >>            : machines. OpenSSL includes a certificate management tool
> and
> >> shared
> >>            : libraries which provide various cryptographic algorithms
> and
> >>            : protocols.
> >>
> >> Available Packages
> >> Name        : openssl
> >> Arch        : i686
> >> Version     : 1.0.1e
> >> Release     : 30.el6_6.5
> >> Size        : 1.5 M
> >> Repo        : updates
> >> Summary     : A general purpose cryptography library with TLS
> implementation
> >> URL         : http://www.openssl.org/
> >> License     : OpenSSL
> >> Description : The OpenSSL toolkit provides support for secure
> communications
> >> between
> >>            : machines. OpenSSL includes a certificate management tool
> and
> >> shared
> >>            : libraries which provide various cryptographic algorithms
> and
> >>            : protocols.
> >>
> >> [adam-dev@REDACTED otp_src_R16B03-1]$ yum info openssl-devel
> >> Loaded plugins: fastestmirror
> >> Loading mirror speeds from cached hostfile
> >> * base: mirror.keystealth.org
> >> * extras: mirror.hostduplex.com
> >> * updates: mirror.pac-12.org
> >> Installed Packages
> >> Name        : openssl-devel
> >> Arch        : x86_64
> >> Version     : 1.0.1e
> >> Release     : 30.el6_6.5
> >> Size        : 2.2 M
> >> Repo        : installed
> >> From repo   : updates
> >> Summary     : Files for development of applications which will use
> OpenSSL
> >> URL         : http://www.openssl.org/
> >> License     : OpenSSL
> >> Description : OpenSSL is a toolkit for supporting cryptography. The
> >> openssl-devel
> >>            : package contains include files needed to develop
> applications
> >> which
> >>            : support various cryptographic algorithms and protocols.
> >>
> >> Available Packages
> >> Name        : openssl-devel
> >> Arch        : i686
> >> Version     : 1.0.1e
> >> Release     : 30.el6_6.5
> >> Size        : 1.2 M
> >> Repo        : updates
> >> Summary     : Files for development of applications which will use
> OpenSSL
> >> URL         : http://www.openssl.org/
> >> License     : OpenSSL
> >> Description : OpenSSL is a toolkit for supporting cryptography. The
> >> openssl-devel
> >>            : package contains include files needed to develop
> applications
> >> which
> >>            : support various cryptographic algorithms and protocols.
> >>
> >> And here is my configuration:
> >>
> >> [adam-dev@REDACTED 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
> >>
> >> Configure finds everything ok. Here is snippet of the output relating to
> >> ssl:
> >>
> >> checking for OpenSSL >= 0.9.7 in standard locations... /usr
> >> checking for OpenSSL kerberos 5 support... yes
> >> checking for krb5.h in standard locations... found in /usr/include
> >> 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
> >>
> >> make and make install complete without error. Another snippet:
> >>
> >> === Entering application crypto
> >> make[3]: Entering directory
> >> `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/src'
> >> make -w RELEASE_PATH="/home/adam-dev/erlang/R16B03-1/lib/erlang"
> >> release_spec
> >> make[4]: Entering directory
> >> `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/src'
> >> /usr/bin/install -c -d
> >> "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/src"
> >> /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"
> >> /usr/bin/install -c -d
> >> "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/ebin"
> >> /usr/bin/install -c -m 644 ../ebin/crypto_app.beam ../ebin/crypto.beam
> >> ../ebin/crypto_server.beam ../ebin/crypto_sup.beam ../ebin/crypto.app \
> >> ../ebin/crypto.appup
> >> "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/ebin"
> >> make[4]: Leaving directory
> >> `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/src'
> >> make[3]: Leaving directory
> >> `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/src'
> >> make[3]: Entering directory
> >> `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/c_src'
> >> make -f x86_64-unknown-linux-gnu/Makefile release
> >> make[4]: Entering directory
> >> `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/c_src'
> >> make -w RELEASE_PATH="/home/adam-dev/erlang/R16B03-1/lib/erlang"
> >> release_spec
> >> make[5]: Entering directory
> >> `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/c_src'
> >> make -f x86_64-unknown-linux-gnu/Makefile release_spec
> >> make[6]: Entering directory
> >> `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/c_src'
> >> /usr/bin/install -c -d
> >> "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/priv/obj"
> >> /usr/bin/install -c -d
> >> "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/priv/lib"
> >> /usr/bin/install -c -m 644 ../priv/Makefile
> >> "/home/adam-dev/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/priv/obj"
> >> /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"
> >> /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"
> >> /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"
> >> /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"
> >> make[6]: Leaving directory
> >> `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/c_src'
> >> make[5]: Leaving directory
> >> `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/c_src'
> >> make[4]: Leaving directory
> >> `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/c_src'
> >> make[3]: Leaving directory
> >> `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/c_src'
> >> make[3]: Entering directory
> >> `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/doc/src'
> >> make -w RELEASE_PATH="/home/adam-dev/erlang/R16B03-1/lib/erlang"
> >> release_spec
> >> make[4]: Entering directory
> >> `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/doc/src'
> >> make[4]: Nothing to be done for `release_spec'.
> >> make[4]: Leaving directory
> >> `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/doc/src'
> >> make[3]: Leaving directory
> >> `/home/adam-dev/erlang/otp_src_R16B03-1/lib/crypto/doc/src'
> >> === Leaving application crypto
> >>
> >>
> >> Any help would be greatly appreciated!
> >>
> >> Cheers,
> >> Bryan
> >>
> >> ----
> >>
> >> Bryan Hughes
> >> Go Factory
> >>
> >> http://www.go-factory.net
> >>
> >> Connecting the Internet of Things
> >>
> >>
> >> _______________________________________________
> >> erlang-questions mailing list
> >> erlang-questions@REDACTED
> >> http://erlang.org/mailman/listinfo/erlang-questions
> >>
> >
> >
> >
> > --
> > --
> >     -Vance
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20150203/aeb499d1/attachment.htm>


More information about the erlang-questions mailing list