Macos Erlang R16B02能否使用OpenSSL在OSX 10.10.5上构建?
我需要在OSX 10.10.5上构建支持SSL的Erlang R16B02,这样我就可以使用Macos Erlang R16B02能否使用OpenSSL在OSX 10.10.5上构建?,macos,openssl,erlang,homebrew,osx-yosemite,Macos,Openssl,Erlang,Homebrew,Osx Yosemite,我需要在OSX 10.10.5上构建支持SSL的Erlang R16B02,这样我就可以使用crypto应用程序。我已经用自制软件安装了OpenSSL 0.9.8。运行openssl
crypto
应用程序。我已经用自制软件安装了OpenSSL 0.9.8。运行openssl
会产生以下结果:
$ openssl
OpenSSL> version
OpenSSL 0.9.8zg 14 July 2015
我能够构建并安装Erlang R16B02,但在尝试启动加密
应用程序时始终会出现相同的错误:
1> crypto:start().
** exception error: undefined function crypto:start/0
2>
=ERROR REPORT==== 1-Feb-2016::14:19:17 ===
Unable to load crypto library. Failed with error:
"load_failed, Failed to load NIF library: 'dlopen(~/.asdf/installs/erlang/R16B02/lib/erlang/lib/crypto-3.1/priv/lib/crypto.so, 2): Symbol not found: _AES_cbc_encrypt
Referenced from: ~/.asdf/installs/erlang/R16B02/lib/erlang/lib/crypto-3.1/priv/lib/crypto.so
Expected in: flat namespace
in ~/.asdf/installs/erlang/R16B02/lib/erlang/lib/crypto-3.1/priv/lib/crypto.so'"
OpenSSL might not be installed on this system.
=ERROR REPORT==== 1-Feb-2016::14:19:17 ===
The on_load function for module crypto returned {error,
{load_failed,
"Failed to load NIF library: 'dlopen(~/.asdf/installs/erlang/R16B02/lib/erlang/lib/crypto-3.1/priv/lib/crypto.so, 2): Symbol not found: _AES_cbc_encrypt\n Referenced from: ~/.asdf/installs/erlang/R16B02/lib/erlang/lib/crypto-3.1/priv/lib/crypto.so\n Expected in: flat namespace\n in ~/.asdf/installs/erlang/R16B02/lib/erlang/lib/crypto-3.1/priv/lib/crypto.so'"}}
我曾尝试调用其他函数,如crypto:module_info()
,但总是出现相同的错误。我已经使用构建了带有各种标志的Erlang R16B02。以下是我尝试过的几种组合:
Building with options: --enable-dynamic-ssl-lib --prefix=~/.asdf/installs/erlang/R16B02
Building with options: --with-ssl=/usr/local/opt/openssl --prefix=~/.asdf/installs/erlang/R16B02 # with-ssl points to the OpenSSL install
Building with options: --with-ssl --prefix=~/.asdf/installs/erlang/R16B02
所有这些都导致了相同的错误。当我试图找出如何使用SSL构建Erlang时,我注意到一件奇怪的事情是--enable-darwin-64位
,而--enable-darwin universal
标志导致构建失败。这似乎很奇怪,因为我正在OSX上构建,所以似乎需要这些标志
因此,总结一下:
- 我正在使用(不过这并不重要)
- 在所有成功构建的情况下,调用
模块中的任何函数时都会出现上述错误crypto
- 我使用OpenSSL和
应用程序构建了Erlang 17加密
otool-L~/.asdf/installs/erlang/R16B02/lib/erlang/lib/crypto-3.1/priv/lib/crypto。因此
打印以下内容:
~/.asdf/installs/erlang/R16B02/lib/erlang/lib/crypto-3.1/priv/lib/crypto.so:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
otool-L~/.asdf/installs/erlang/R16B02/lib/erlang/lib/crypto-3.1/priv/lib/crypto.so
显示了什么?如果将shell中的DYLD\u LIBRARY\u PATH
环境变量设置为/usr/local/opt/openssl/lib
,并在运行erl
和crypto:start()
之前将其导出,会发生什么情况?使用otool的输出更新了问题。设置DYLD\u LIBRARY\u PATH
不会更改erl
会话中crypto
模块函数调用的输出。otool
命令应显示crypto.so
NIF依赖于libcrypto.0.9.8.dylib
。我刚刚在10.10.5上用标准openssl成功地构建了R16B02,并且libcrypto
依赖关系存在于crypto.so
。configure
的输出是否显示它正在成功地查找libcrypto
?好主意。我卸载了brew OpenSSL,只使用了OSX预装的OpenSSL。这并没有改变错误。我最后尝试了这个configure调用,使其正常工作:CFLAGS=“-DOPENSSL\u NO\u EC=1”。/configure——启用动态ssl库——不带wx——前缀=/somewhere/
。我不完全理解为什么其他人这样做会起作用,但一旦我这样做了,我会在我了解情况后在邮件列表中发布一个带有相关消息链接的答案。事实上,尽管使用--启用动态ssl库
配置调用成功,这同样有效:/configure——不带wx——前缀=/somewhere/
。如果我省略了——而没有wx
,它将失败,但因为我没有安装wxWidgets,这是有意义的。谢谢你的帮助,史蒂夫!otool-L~/.asdf/installs/erlang/R16B02/lib/erlang/lib/crypto-3.1/priv/lib/crypto.so
显示了什么?如果将shell中的DYLD\u LIBRARY\u PATH
环境变量设置为/usr/local/opt/openssl/lib
,并在运行erl
和crypto:start()
之前将其导出,会发生什么情况?使用otool的输出更新了问题。设置DYLD\u LIBRARY\u PATH
不会更改erl
会话中crypto
模块函数调用的输出。otool
命令应显示crypto.so
NIF依赖于libcrypto.0.9.8.dylib
。我刚刚在10.10.5上用标准openssl成功地构建了R16B02,并且libcrypto
依赖关系存在于crypto.so
。configure
的输出是否显示它正在成功地查找libcrypto
?好主意。我卸载了brew OpenSSL,只使用了OSX预装的OpenSSL。这并没有改变错误。我最后尝试了这个configure调用,使其正常工作:CFLAGS=“-DOPENSSL\u NO\u EC=1”。/configure——启用动态ssl库——不带wx——前缀=/somewhere/
。我不完全理解为什么其他人这样做会起作用,但一旦我这样做了,我会在我了解情况后在邮件列表中发布一个带有相关消息链接的答案。事实上,尽管使用--启用动态ssl库
配置调用成功,这同样有效:/configure——不带wx——前缀=/somewhere/
。如果我省略了——而没有wx
,它将失败,但因为我没有安装wxWidgets,这是有意义的。谢谢你的帮助,史蒂夫!