【问题标题】:OpenSSL: can't build in VC++ 2010OpenSSL:无法在 VC++ 2010 中构建
【发布时间】:2011-12-02 13:42:52
【问题描述】:

我已经下载了最新的 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) 微软公司。保留所有权利。

组装:ms\uptable.asm

C:\1>perl util\mk1mf.pl no-asm VC-WIN64A 1>ms\nt.mak 在 util\mk1mf.pl 第 907 行没有针对 crypto\md4 的规则。

C:\1>perl util\mk1mf.pl dll no-asm VC-WIN64A 1>ms\ntdll.mak 在 util\mk1mf.pl 第 907 行没有针对 crypto\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 行没有 crypto\md4 规则”仍然存在。

谁能帮助我构建库或共享 vc2010 构建的二进制文件?.. 或者库的 VS2010 项目文件?

【问题讨论】:

    标签: c++ openssl visual-c++-2010


    【解决方案1】:

    问题似乎与 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 users mailing 中找到解决方案:

    http://groups.google.com/group/mailing.openssl.users/browse_thread/thread/42a8f226f1fc279f)

    【讨论】:

    • 谢谢!我会尽快检查一下。
    • 这帮助我在编译 ms\do_ms 时没有出现“在 util\mk1mf.pl 第 907 行没有针对 crypto\md4 的规则”错误。
    【解决方案2】:

    上面提供的补丁有效,但更好的解决方案是使用 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
    

    【讨论】:

    • 这绝对有效。我的 PATH 上有 git\bin,所以它使用的是 Perl 的 MSYS 版本。我将 ActiveState 首先放在我的 PATH 上。
    • @yano,谢谢。对于 Windows 用户,where perl 将显示 perl 路径条目的顺序。我的 ActivePerl 安装前还有 git 的 perl。
    【解决方案3】:

    看起来您正在使用 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
    

    【讨论】:

    • 这正是我的问题。我通过发出'find ./ -type f -exec dos2unix {} \;'来修复它从我的 Git bash shell 更改行尾。 (注意:请注意 find 与 dos 提示符不同。)
    【解决方案4】:

    本文审查了使用 Visual Studio 构建 OpenSSL 的一些奇怪之处:

    http://developer.covenanteyes.com/building-openssl-for-visual-studio/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多