在Linux和Windows上编译Net :: SSLeay期间出现的问题

时间:2015-04-21 11:25:38

标签: perl-module

我们已经从cpan下载了Net :: SSLeay模块源,并希望在本地编译并使用它。我们在两种情况下都面临着问题。

我们需要您对几件事的建议:

1)我们需要使用Net :: SSLeay模块。我们使用以下语句在Linux x86_64框上编译它: perl Makefile.PL INC = -I“/ include”LIBS = -L“/ lib”

这会生成一个似乎不使用-lcrypto选项的Makefile。我想使用此选项,因为我们在运行时看到以下错误:

未定义的符号:X509_EXTENSION_free

从下面的链接看来,我们需要包含-lcrypto选项。请帮助我们如何包含此选项。我试着查看Makefile.pl但是因为我是这个Makefile的新手而无法理解。

http://w3facility.org/question/what-is-undefined-symbol-x509_extension_free/

2)其次,在Windows上构建时,我们需要包含openssl_path,但INC =和LIBS =似乎不起作用。 Openssl库已存在于本地目录中。请告诉我们如何在#perl Makefile.pl选项中包含路径。

非常感谢您的建议。

1 个答案:

答案 0 :(得分:0)

我不知道它是否对您有帮助,但在尝试安装 LWP :: Protocol :: https时,我遇到与 Net :: SSLeay 类似的问题(在我的自定义路径 / root / perl 中):

isThisFruitHere(List<Apples> apples, APPLES)
isThisFruitHere(List<Apples> apples, ORANGES)

根据建议HERE,我通过以这种方式手动编译Net-SSLeay-1.74来解决:

debian:~# apt-get install libssl-dev
debian:~# /root/perl/bin/perl -e "use LWP::Protocol::https"
Can't load '/root/perl/lib/site_perl/5.14.2/armv5tejl-linux/auto/Net/SSLeay/SSLeay.so' for module Net::SSLeay: /root/perl/lib/site_perl/5.14.2/armv5tejl-linux/auto/Net/SSLeay/SSLeay.so: undefined symbol: X509_EXTENSION_free at /root/perl/lib/5.14.2/armv5tejl-linux/DynaLoader.pm line 190.

然后它正常工作:

debian:~/.cpan/build/Net-SSLeay-1.74-Zaf3oe# perl Makefile.PL LIBS="-L/root/perl/lib -lssl -lcrypto -lcrypt3" INC="-I/root/perl/include"
debian:~/.cpan/build/Net-SSLeay-1.74-Zaf3oe# make
debian:~/.cpan/build/Net-SSLeay-1.74-Zaf3oe# make install