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

Dmitry Klionsky <>
Tue Feb 3 13:03:12 CET 2015


Hi,

It' not the whole story.

The flags should be

CFLAGS="-DOPENSSL_NO_EC=1 -g -O2" ./configure

More details here
http://erlang.org/pipermail/erlang-questions/2014-July/080317.html
http://erlang.org/pipermail/erlang-questions/2014-August/080353.html

BR


On 02/03/2015 06:00 AM, Bryan 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 <> 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 <> 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:
>>>
>>> [ 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:
>>>
>>> [ 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:
>>>
>>> [ 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:
>>>
>>> [ 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.
>>>
>>> [ 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:
>>>
>>> [ 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
>>> 
>>> http://erlang.org/mailman/listinfo/erlang-questions
>>>
>>
>>
>> -- 
>> -- 
>>      -Vance
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions



More information about the erlang-questions mailing list