Macos DynaLoader.pm可以';找不到libssl

Macos DynaLoader.pm可以';找不到libssl,macos,perl,openssl,Macos,Perl,Openssl,我使用ExtUtils::MakeMaker(Perl Makefile.PL等)构建了一个Perl库,并在web服务器上部署了一些CGI脚本。当我运行“PERL5LIB=$HOME/perl5/lib/perl5 make test”时,它像champ一样构建,并且所有测试都通过了 但是,当我尝试将它部署到另一个项目中时,其中我将所有Perl依赖项安装到了./local/lib/perl5(使用carton),然后尝试安装我的自定义库 PER5LIB=local/bin/perl5 cpanm

我使用ExtUtils::MakeMaker(Perl Makefile.PL等)构建了一个Perl库,并在web服务器上部署了一些CGI脚本。当我运行“PERL5LIB=$HOME/perl5/lib/perl5 make test”时,它像champ一样构建,并且所有测试都通过了

但是,当我尝试将它部署到另一个项目中时,其中我将所有Perl依赖项安装到了./local/lib/perl5(使用carton),然后尝试安装我的自定义库

PER5LIB=local/bin/perl5 cpanm -L ./local .../MY-Lib.tar.gz
测试失败,因为DynaLoader.pm找不到libssl.1.0.0.dylib

我已经将libssl.1.0.0.dylib安装为/usr/local/opt/openssl/lib/libssl.1.0.0.dylib

我甚至尝试破解cpan工作目录中的本地Makefile,将“-L/usr/local/opt/openssl/lib”附加到LDDLFLAGS并尝试重新运行make test,但DynaLoader.pm仍然找不到libssl

日志中的第一条错误消息是:

install_driver(mysql) failed: Can't load '$HOME/my-project/scripts/local/lib/perl5/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle' for module DBD::mysql: dlopen($HOME/my-project/scripts/local/lib/perl5/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle, 2): Library not loaded: libssl.1.0.0.dylib
  Referenced from: $HOME/my-project/scripts/local/lib/perl5/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle
  Reason: image not found at /usr/local/Cellar/perl/5.28.0/lib/perl5/5.28.0/darwin-thread-multi-2level/DynaLoader.pm line 197.

当PERL5LIB指向本地目录时,即使安装了所有必备组件,如何让DynaLoader.pm找到libssl?如何调试此功能?

您的链接器是否知道在该目录中查找库?不确定OS X的详细信息,但可能有一个配置文件和/或环境变量保存要搜索的目录列表。错误来自
dlopen
系统调用。查阅它的手册页?@Shawn谢谢,我已经试过使用和不使用LD_LIBRARY_PATH=/usr/local/opt/openssl/lib/libssl。不走运。@ikegami,谢谢你。我注意到dlopen()的参数以“$HOME/…”开头,看起来$HOME还没有扩展到“/Users/…”。如果我用“env | grep HOME”搜索我本地的env vars查找HOME,我得到的结果就是“HOME=/Users/…”,这正是我所期望的。所以,$HOME必须是cpanm中某个地方的单引号。这超出了我的项目范围,但我必须检查一下。抢手货哦,是的,嗯!令人惊叹的