按照INSTALL.W64中的说明操作后,我遇到两个问题:
答案 0 :(得分:22)
要编译静态库(发布和调试),您需要执行以下操作:
# The output directory for everything intersting OUT_D=out64.dbg # The output directory for all the temporary muck TMP_D=tmp64.dbg # The output directory for the header files INC_D=inc64 INCO_D=inc64\openssl
答案 1 :(得分:3)
我使用1.0.1c源代码解决了这个问题:
在util/pl/VC-32.pl
行之前将此块添加到$o='\\';
。
if ($debug)
{
$ssl .= 'd';
$crypto .= 'd';
}
在util/pl/VC-32.pl
行之前将此块添加到if ($debug)
。
if ($FLAVOR =~ /WIN64/)
{
$out_def =~ s/32/64/;
$tmp_def =~ s/32/64/;
$inc_def =~ s/32/64/;
}
然后建立所有品种:
setenv /x86 /release
perl Configure VC-WIN32 --prefix=build -DUNICODE -D_UNICODE
ms\do_ms
nmake -f ms\ntdll.mak
setenv /x64 /release
perl Configure VC-WIN64A --prefix=build
ms\do_win64a.bat
nmake -f ms\ntdll.mak
setenv /x86 /debug
perl Configure debug-VC-WIN32 --prefix=build -DUNICODE -D_UNICODE
ms\do_ms
move /y ms\libeay32.def ms\libeay32d.def
move /y ms\ssleay32.def ms\ssleay32d.def
nmake -f ms\ntdll.mak
setenv /x64 /debug
perl Configure debug-VC-WIN64A --prefix=build
ms\do_win64a.bat
move /y ms\libeay32.def ms\libeay32d.def
move /y ms\ssleay32.def ms\ssleay32d.def
nmake -f ms\ntdll.mak
答案 2 :(得分:3)
使用Conan。它的安装和使用非常简单。
您可以请求准备好使用的文件。例如,对于Linux x64或与Visual Studio 2012一起使用。这是一个示例指令:
conan install OpenSSL/1.0.2g@lasote/stable -s arch="x86_64" -s build_type="Debug" -s compiler="gcc" -s compiler.version="5.3" -s os="Linux" -o 386="False" -o no_asm="False" -o no_rsa="False" -o no_cast="False" -o no_hmac="False" -o no_sse2="False" -o no_zlib="False" ...
答案 3 :(得分:2)
根据官方文件:
"您可能会感到惊讶:64位伪像确实在out32 *子目录中输出,并且熊名称以* 32.dll结尾。事实上,64位编译目标是迄今为止对传统32位Windows目标的增量更改。许多编译标志仍然标有" 32"虽然这些适用于32位和64位目标。"
所以不再需要第一个答案。
可在此处找到说明:
https://wiki.openssl.org/index.php/Compilation_and_Installation#W64
答案 4 :(得分:1)
如果你在cygwin中构建,可以使用以下脚本,假设MSDEVPATH已经设置为Visual Studio目录
echo "Building x64 OpenSSL"
# save the path of the x86 msdev
MSDEVPATH_x86=$MSDEVPATH
# and set a new var with x64 one
MSDEVPATH_x64=`cygpath -u $MSDEVPATH/bin/x86_amd64`
# now set vars with the several lib path for x64 in windows mode
LIBPATH_AMD64=`cygpath -w $MSDEVPATH_x86/lib/amd64`
LIBPATH_PLATFORM_x64=`cygpath -w $MSDEVPATH_x86/PlatformSDK/lib/x64`
# and set the LIB env var that link looks at
export LIB="$LIBPATH_AMD64;$LIBPATH_PLATFORM_x64"
# the new path for nmake to look for cl, x64 at the start to override any other msdev that was set previously
export PATH=$MSDEVPATH_x64:$PATH
./Configure VC-WIN64A zlib-dynamic --prefix=$OUT --with-zlib-include=zlib-$ZLIB_VERSION/include --with-zlib-lib=zlib-$ZLIB_VERSION/x64_lib
# do the deed
ms/do_win64a.bat
$MSDEVPATH_x86/bin/nmake -f ms/ntdll.mak ${1:-install}
答案 5 :(得分:0)
自最初提出此问题以来,构建说明已更改。可以在here中找到新的说明。请注意,您将需要安装perl和NASM,并且需要使用developer命令提示符。
答案 6 :(得分:0)
在撰写本文时,最新的OpenSSL版本为1.1.1a。
环境:
先决条件:
确保Perl和NASM都在PATH环境变量中。
编译x64:
步骤4是可选的。
编译x86:
步骤4是可选的。
答案 7 :(得分:-1)
您还可以使用MSYS + mingw-w64:
1)下载并将msys提取到C:\ msys
2)下载并提取mingw-w64到c:\ mingw64
3)运行msys postinstall脚本。当它要求你的mingw安装时,将它指向C:\ mingw64 \ bin
4)提取openssl每日快照(1.0.0版本有一个错误)。在源dir运行
配置mingw64
使
检查
make install
5)openssl安装到/ local /