我已经下载了最新的OpenSSL源包。我想用VC ++ 2010 x64构建它。按照说明似乎不起作用。配置步骤看起来很好,但随后:
C:\ 1> MS \ do_win64a.bat
C:\ 1> perl util \ mkfiles.pl 1> MINFO
C:\ 1> perl ms \ uplink.pl win64a 1> ms \ uptable.asm
C:\ 1> ml64 -c -Foms \ uptable.obj ms \ uptable.asm Microsoft(R)宏汇编程序(x64)版本10.00.30319.01 版权所有(C)Microsoft Corporation。保留所有权利。
组装:ms \ uptable.asm
C:\ 1> perl util \ mk1mf.pl no-asm VC-WIN64A 1> ms \ nt.mak 在util \ mk1mf.pl第907行没有加密\ md4的规则。
C:\ 1> perl util \ mk1mf.pl dll no-asm VC-WIN64A 1> ms \ ntdll.mak 在util \ mk1mf.pl第907行没有加密\ md4的规则。
C:\ 1> perl util \ mkdef.pl 32 libeay 1> ms \ libeay32.def
C:\ 1> perl util \ mkdef.pl 32 ssleay 1> ms \ ssleay32.def
Win 32(do_ms)输出看起来有点不同,但“util \ mk1mf.pl第907行的加密\ md4没有规则”仍然存在。
有人可以帮我构建库或共享vc2010构建的二进制文件吗?或者是库的VS2010项目文件?
答案 0 :(得分:29)
问题似乎与eol(行尾)有关。解决方案是修补mk1mf.pl以使其删除回车:
Index: mk1mf.pl
===================================================================
--- mk1mf.pl (revision 88908)
+++ mk1mf.pl (working copy)
@@ -315,7 +315,7 @@
for (;;)
{
chop;
+ s/\r$//; #remove carriage return too!
($key,$val)=/^([^=]+)=(.*)/;
if ($key eq "RELATIVE_DIRECTORY")
{
在openssl用户邮件中找到解决方案:
http://groups.google.com/group/mailing.openssl.users/browse_thread/thread/42a8f226f1fc279f)
答案 1 :(得分:7)
上面提供的补丁有效,但更好的解决方案是按照OpenSSL文档中的建议使用ActivePerl。
http://www.activestate.com/activeperl/downloads
其他perl构建(例如MSYS构建)会给你这个错误。
为了弄清楚您是否使用ActivePerl,请在命令提示符下运行perl.exe --version。它应该说:
Binary build 1601 [296175] provided by ActiveState http://www.ActiveState.com
答案 2 :(得分:2)
看起来你正在使用MSYS perl,它遵循unix风格的行结尾。 您应该使用MSYS工具从.tar.gz中提取的资源:
$ tar zxvf openssl-1.0.2d.tar.gz
或在结帐前设置配置“autocrlf false”的git结帐:
> git config --global core.autocrlf false
> git clone https://github.com/openssl/openssl
答案 3 :(得分:1)
本文审查了使用Visual Studio构建OpenSSL的一些奇怪之处:</ p>
http://developer.covenanteyes.com/building-openssl-for-visual-studio/