OpenSSL:无法在VC++ 2010中构建

OpenSSL: can't build in VC++ 2010

本文关键字:2010 构建 VC++ OpenSSL      更新时间:2023-10-16

我已经下载了最新的OpenSSL源代码包。我想用vc++ 2010 x64来构建它。按照指示做似乎行不通。配置步骤看起来很好,但是接下来:

C: do_win64a.bat女士1>

C:1>perl utilmkfiles.pl 1>MINFO

C:1>perl msuplink.pl win64a 1>msuptable.asm

C:1>ml64 -c - forms uptable。obj uptable.asm女士Microsoft (R) Macro Assembler (x64) Version 10.00.30319.01微软公司版权所有。版权所有

组装:女士 uptable.asm

C:1>perl utilmk1mf.pl no-asm VC-WIN64A 1>msnt. makk在mk1mf.pl line 907.

C:1>perl utilmk1mf.pl dll no-asm VC-WIN64A 1>msntdll. makk在mk1mf.pl line 907.

C:1>perl utilmkdef.pl 32 libay 1>mslibeay32.def

C:1>perl utilmkdef.pl 32 ssleay32.def

win32 (do_ms)的输出看起来有点不同,但是"no rule for cryptomd4 at till mk1mf.pl line 907"仍然存在。

有没有人可以帮助我建立库或共享vc2010构建的二进制文件?或VS2010项目文件的库?

这个问题似乎与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)

上面提供的补丁可以工作,但更好的解决方案是使用use ActivePerl,正如OpenSSL文档中建议的那样。

http://www.activestate.com/activeperl/downloads

其他perl版本,如MSYS版本,会给你这个错误。

为了弄清楚你是否在使用ActivePerl,在命令提示符中运行perl.exe——version。它应该是这样的:

Binary build 1601 [296175] provided by ActiveState http://www.ActiveState.com

看起来您正在使用MSYS perl,它遵循unix风格的行结尾。您应该使用MSYS工具从.tar.gz中提取的源代码:

  $ tar zxvf openssl-1.0.2d.tar.gz

或从git签出,在签出前设置配置" autoliff false":

  > git config --global core.autocrlf false
  > git clone https://github.com/openssl/openssl