Macos Erlang R16B02能否使用OpenSSL在OSX 10.10.5上构建?

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

我需要在OSX 10.10.5上构建支持SSL的Erlang R16B02,这样我就可以使用
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
更新

我遇到了这个问题,所以我尝试了这里列出的配置脚本的两个选项,但仍然出现了相同的错误

更新2

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,这是有意义的。谢谢你的帮助,史蒂夫!