我正在尝试构建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中的Solution属性中提供,但是如何从命令行设置它我不知道,而openssl并不代表Microsoft Visual Studio Solution,它可以由MS Visual Studio打开。
所以,也许有人知道如何从命令行设置这个属性,或者,这个错误可能不依赖于此而且有人知道如何解决这个问题。
我希望得到你的帮助。拜托,伙计们,第二天我试着解决这个问题,你是我最后的机会!!
答案 0 :(得分:1)
这就是我所做的。首先,我打开了64位版本的命令提示符:
$ cl Microsoft (R) C/C++ Optimizing Compiler Version 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
,我建议你也这样做,而不是说“我不知道这个命令是什么意思做的”。阅读INSTALL
后,您将知道命令实际执行的操作。
$ perl Configure --prefix=%TEMP%\openssl VC-WIN64A
$ nmake
这没有给我任何错误,所以我继续发布
$ nmake test
给了我
Microsoft (R) Program Maintenance Utility Version 12.00.21005.1 Copyright (C) Microsoft Corporation. All rights reserved. set SRCTOP=. set BLDTOP=. set PERL=C:\opt\perl\5.24.1\bin\perl.exe set OPENSSL_DEBUG_MEMORY=on "C:\opt\perl\5.24.1\bin\perl.exe" ".\test\run_tests.pl" test\recipes\01-test_abort.t ............ ok test\recipes\01-test_sanity.t ........... ok test\recipes\01-test_symbol_presence.t .. ok ... test\recipes\90-test_sslapi.t ........... ok test\recipes\90-test_threads.t .......... ok test\recipes\90-test_v3name.t ........... ok All tests successful. Files=91, Tests=433, 100 wallclock secs ( 0.66 usr + 0.27 sys = 0.92 CPU) Result: PASS
此时,我非常肯定nmake install
也会有效,但我不想替换我系统上的任何内容。
您没有与Perl或编程相关的问题。
答案 1 :(得分:-2)
我认为您忘记运行配置脚本生成的ms\do_ms.bat
文件。
以下是我用于在PC上构建OpenSSL的脚本。
先决条件:
然后将以下脚本保存到名为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 #######################################
然后建立:
打开一个干净的命令shell窗口。优选地,您的PATH环境已经“干净”并且不包含Visual Studio。此外,您的环境不应设置任何LIB
或INCLUDE
值。 (在命令提示符下键入set
。如果没有看到LIB或INCLUDE的条目,那就好了。
cd到你的openssl源目录。将上面的bldenv.cmd脚本复制到此目录。
运行上面的脚本(bldenv.cmd)
然后运行:ms\do_nasm.bat
后跟:nmake -f ms\ntdll.mak
应该这样做。