【问题标题】:Why is my attempt to build OpenSSL on Windows using Visual Studio tools failing?为什么我尝试使用 Visual Studio 工具在 Windows 上构建 OpenSSL 失败了?
【发布时间】:2017-05-07 18:13:21
【问题描述】:

我正在尝试构建 openssl 库。我从 GitHub 克隆了一个仓库 https://github.com/openssl/openssl

现在使用 Visual Studio 2013 的“命令行”。这个命令行:

我使用下一个命令: cd C:\Programs\openssl - 使用 openssl repo 转到文件夹

perl 配置 VC-WIN64A --prefix=C:\Programs\openssl-build - 实际上,我不知道这个命令究竟是做什么的,但所有手册都说它需要。该命令有下一个输出

而且“是的,我有'Perl',当然我安装了'Perl'”

还有下一个(也是最后一个)命令,我写的只是简单的“nmake”。最后因为这个命令的输出有一些“致命错误”,这不让我继续安装

如您所见,主要错误是“致命错误 LNK1112:模块机器类型 'X86' 与目标机器类型 'x64' 冲突”。据我所知,参数机器类型可以在 Microsoft Visual Studio GUI 的解决方案属性中提供,但是如何从命令行设置它我不知道,并且 openssl 不代表 Microsoft Visual Studio 解决方案,可以打开由 MS Visual Studio 提供。

所以,也许有人知道如何从命令行设置这个属性,或者,这个错误可能不依赖于此并且有人知道如何解决这个问题。

希望对您有所帮助。拜托,伙计们,第二天我试图解决这个问题,你是我最后的机会了!!

【问题讨论】:

  • Configure你正在构建64位,但是你打开了一个适合32位构建的cmd.exe环境。 如果你有一个 64 位操作系统,你需要 VS2013 x64 Native Tools 命令提示符。另外,您为什么要尝试构建 OpenSSL 的开发版本?
  • @SinanÜnür 不幸的是,它没有帮助。没有任何变化。
  • 请说明错误。图片上的文字太小,无法阅读。此外,搜索引擎无法为未来的访问者检索文本。请说明 Windows 的确切版本,并确保包括其 X86 或 X64。最后,说明开发人员提示提供的 cpu。

标签: windows visual-studio openssl


【解决方案1】:

这就是我所做的。首先,我为 64 位构建打开了一个命令提示符:

$ cl
Microsoft (R) C/C++ 优化编译器版本 18.00.40629 for x64

然后,我下载了current 1.1 release tarball。除非您实际上正在开发 OpenSSL,并且您能够调试开发版本中的问题,否则没有理由混淆开发版本。

$ curl -O https://www.openssl.org/source/openssl-1.1.0e.tar.gz
$ tar xvf openssl-1.1.0e.tar.gz
$ cd openssl-1.1.0e

此时,我阅读了INSTALL,我建议你也这样做,而不是说“我不知道这个命令到底做什么 em>”。一旦您阅读了INSTALL,您就会知道该命令的实际作用。

$ perl Configure --prefix=%TEMP%\openssl VC-WIN64A
$ nmake

这没有给我任何错误,所以我继续发布

$ nmake test

这给了我

Microsoft (R) 程序维护实用程序版本 12.00.21005.1
版权所有 (C) 微软公司。版权所有。

        设置 SRCTOP=。
        设置 BLDTOP=。
        设置 PERL=C:\opt\perl\5.24.1\bin\perl.exe
        设置 OPENSSL_DEBUG_MEMORY=on
        "C:\opt\perl\5.24.1\bin\perl.exe" ".\test\run_tests.pl"
测试\食谱\01-test_abort.t ......好的
测试\食谱\01-test_sanity.t ......好的
测试\食谱\01-test_symbol_presence.t .. 好的
...
测试\食谱\90-test_sslapi.t ......好的
测试\食谱\90-test_threads.t .......... 好的
测试\食谱\90-test_v3name.t ......好的
所有测试成功。
文件=91,测试=433,100 挂钟秒(0.66 usr + 0.27 sys = 0.92 CPU)
结果:通过

在这一点上,我很确定 nmake install 也可以工作,但我不想替换我系统上的任何东西。

您没有 Perl 或编程相关问题。

【讨论】:

  • nmake 测试和 nmake 安装以与“nmake”相同的错误消息结束。也不行
  • 那是因为您没有完全按照步骤操作。
【解决方案2】:

我想你忘了运行由 Configure 脚本生成的 ms\do_ms.bat 文件。

以下是我用于在我的 PC 上构建 OpenSSL 的脚本。

先决条件:

  1. 在您的 PC 上安装 Perl。我想我使用了 ActivePerl,但我怀疑任何版本都可以。
  2. 安装 NASM。 http://www.nasm.us/
  3. 安装 Visual Studio

然后将以下脚本保存到名为bldenv.cmd的文件中

REM ######################################
REM MODIFY THESE VARIABLES BELOW TO POINT TO YOUR NASM, PERL, and VISUAL STUDIO PATHS
REM Base Variables
SET _BLD_NASM=c:\nasm\bin
SET _BLD_PERL=c:\perl64\bin
SET _BLD_VSTUDIO=c:\vstudio

REM ######################################


Echo Initializing the Visual Studio Build environment
call %_BLD_VSTUDIO%\VC\vcvarsall.bat x86

Echo adding Perl to Path
set PATH=%_BLD_PERL%;%PATH%

Echo Adding NASM to Path
set PATH=%_BLD_NASM%;%PATH%

echo #######################################
echo Build environment is ready
echo TO BUILD:
echo     perl Configure VC-WIN32    (or perl Configure debug-VC-WIN32)
echo     ms\do_nasm.bat
echo     nmake -f ms\ntdll.mak      (or nmake -f ms\nt.mak for a static lib)
echo #######################################

然后构建:

  1. 打开一个干净的命令外壳窗口。最好您的 PATH 环境已经“干净”并且不包含 Visual Studio。此外,您的环境不应设置任何 LIBINCLUDE 值。 (在命令提示符下输入 set。如果您还没有看到 LIB 或 INCLUDE 条目,那很好)。

  2. cd 到您的 openssl 源目录。把上面的bldenv.cmd脚本复制到这个目录下。

    运行上面的脚本(bldenv.cmd)

    然后运行:ms\do_nasm.bat

    关注者:nmake -f ms\ntdll.mak

应该可以的。

【讨论】:

  • 不,错误的诊断。 ms\do_ms.bat 仅适用于 1.0.x 版本。他正在建设1.1.1-dev。阅读当前的INSTALL,而不是给出错误和过时的答案。
  • 那么也许 OP 应该切换到 OpenSSL 1.0.2。 :)
猜你喜欢
  • 2018-01-11
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 2019-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-26
相关资源
最近更新 更多