Erlang R16+ Crypto模塊與最新Openssl不兼容問題

方法一:

CFLAGS="-DOPENSSL_NO_EC=1" ./configure

方法二:

原文地址:http://www.kongqingquan.com/archives/145

服務器上新安裝了R1601版本後,啓動crypto模塊 時出現下面的錯誤:
The on_load function for module crypto returned {error,
{load_failed,
“Failed to load NIF library: ‘/usr/local/lib/erlang/lib/crypto-3.2/priv/lib/crypto.so: undefined symbol: EC_GROUP_new_curve_GF2m’”}}

因R16+版本和最新的openssl不兼容所至,服務器上的openssl版本是OpenSSL 1.0.1e-fips 11 Feb 2013。網上說可通過下載openssl源碼,修改編譯參數即可解決。但修改openssl編譯後,問題並沒解決。

最後,在erlagn.org中找到的解決方法。

修改crypto源碼包中的lib/crypto/c_src/crypto.c文件,把原有定義

#if OPENSSL_VERSION_NUMBER >= 0x009080ffL \
&&!defined(OPENSSL_NO_EC) \
&&!defined(OPENSSL_NO_ECDH) \
&&!defined(OPENSSL_NO_ECDSA)
#define HAVE_EC
#endif

修改爲

#if OPENSSL_VERSION_NUMBER >= 0x009080ffL \
&&!defined(OPENSSL_NO_EC) \
&&!defined(OPENSSL_NO_EC2M) \
&&!defined(OPENSSL_NO_ECDH) \
&&!defined(OPENSSL_NO_ECDSA)
#define HAVE_EC
#endif

重新編譯安裝Erlang即可。

具體見: http://erlang.org/pipermail/erlang-questions/2013-December/076327.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章