I'm compiling OpenSSL with Visual Studio 2015.
I have installed:
1. Visual Studio 2015 on Windows 10.
ActivePerl-5.24.0.2400-MSWin32-x64-300558.
nasm-2.11.08-win32.
OpenSSL source code by git clone git://git.openssl.org/openssl.git
What I did are:
Create a batch file with lines below.
@call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64
@set path=%path%;C:\Users\gchen\AppData\Local\nasm
perl Configure VC-WIN64A —prefix=C:\test\openssl
Now I should do ms\do_win64a. But I can't find this batch file.
in directory 'ms', there are files
2016/08/22 17:39 .
2016/08/22 17:39 ..
2016/08/21 14:23 3,646 applink.c
2016/08/21 14:23 1,247 cmp.pl
2016/08/21 14:23 2,815 segrenam.pl
2016/08/21 14:23 4,541 tlhelp32.h
2016/08/21 14:23 1,137 uplink-common.pl
2016/08/21 14:23 1,472 uplink-ia64.pl
2016/08/21 14:23 1,111 uplink-x86.pl
2016/08/21 14:23 1,594 uplink-x86_64.pl
2016/08/21 14:23 4,225 uplink.c
2016/08/21 14:23 2,268 uplink.h
but there is no ms-win64a.bat.
what did I do wrong?
The build process has changed with the new 1.1.0 release. Probably you already figured out yourself, but anyway:
Starting with 1.1.0 there are no ms\do_*.bat
files anymore.
Instead execute the following steps:
x32 compilation on Windows:
perl Configure VC-WIN32
nmake
nmake test
x64A compilation on Windows:
perl Configure VC-WIN64A
nmake
nmake test
Configure your Compiler environment as before and point your path to Perl (and NASM if used).
Source: The INSTALL
file included in the 1.1.0 release.
Since the new 1.1.0 release there is no ms\
folder in the source code. And if you wonder what should you edit to build a static version nowadays (which results in a single .exe file without any DLLs). Here is the full guide.
You will need the following prerequisites:
- Git for Windows. You can download it at https://git-scm.com/download/win. This guide uses version 2.11.0.3.
- Strawberry perl. You can download it at http://strawberryperl.com/ (Warning: ActivePerl is highly not recommended. It will give you strange errors during the process). This guide uses version 5.24.1.1.
- NASM assembler, which is available from http://www.nasm.us/. This guide uses version 2.12.03rc1.
You are expected to install all those tools system-wide and add them to your %PATH%
environmental variable.
After you got everything we need, just follow this simple steps:
- Open VS2015 x64 Native Tools Command Prompt from your Start Menu. You will see command prompt.
Create C:\build
directory and issue the following command in the command prompt:
Download latest zlib & OpenSSL source codes to your build
dir by using the following commands:
git clone https://github.com/madler/zlib
git clone https://github.com/openssl/openssl
First we have to build static zlib
. To do that first we will need to edit some configuration files:
Build zlib
using the following command (should take less than a minute):
nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -DNDEBUG -I." OBJA="inffasx64.obj gvmat64.obj inffas8664.obj"
Copy resulting files to your OpenSSL
directory:
xcopy zlib.h C:\build\openssl\
xcopy zconf.h C:\build\openssl\
xcopy zlib.lib C:\build\openssl\
xcopy zlib.pdb C:\build\openssl\
Navigate to OpenSSL
source: cd C:\build\openssl\
and configure it to use static zlib & read configuration files (openssl.cnf
) from C:\Windows\
directory.
perl Configure VC-WIN64A no-shared zlib no-zlib-dynamic threads --prefix=C:\Windows\
Now make the following edits to the C:\build\openssl\makefile
:
- Find the line that starts with:
CFLAG
- Append:
/Zc:wchar_t- /GL /Zi
- Find the line that starts with:
LDFLAGS
- Replace
/debug
with /incremental:no /opt:icf /dynamicbase /nxcompat /ltcg /nodefaultlib:msvcrt
- Find the line that starts with:
EX_LIBS
- Replace
ZLIB1
with zlib.lib
- Save changes
Build OpenSSL
by issuing the nmake
command (will take around 15 minutes).
The resulting ~3MB openssl.exe
file will be located at C:\build\openssl\apps\
directory. It is fully portable, since all DLLs are included. If you need to use custom configuration file, copy C:\build\openssl\apps\openssl.cnf
to your C:\Windows\
directory & edit it to your liking.