How to install openssl on windows with visual studio 2015

cite from http://developer.covenanteyes.com/building-openssl-for-visual-studio/
a
nd some edit..

==================================================

 

You need to install…

Setting up for the build

Unzip3 the OpenSSL source code into two different folders, one for the 32-bit build and one for the 64-bit build4. So, for example, you might end up with C:openssl-src-32 and C:openssl-src-64.

Building the 32-bit static libraries

  1. Open the Visual Studio Command Prompt (2010)5.
  2. cd to your OpenSSL source folder for 32-bit (e.g. cd C:openssl-src-32).
  3. Run the following: 6

Your outputs will be in C:Build-OpenSSL-VC-32.

Building the 32-bit static libraries with debug symbols

These steps will embed the debug symbols directly into the .lib files. Don’t expect to see any .pdb files.

  1. Open the Visual Studio Command Prompt (2010).
  2. cd to your OpenSSL source folder for 32-bit (e.g. cd C:openssl-src-32).
  3. Run the following:
  4. In a text editor (like Notepad), open msnt.mak and replace all occurrences of /Zi with /Z7. There should be three replacements.7
  5. Run the following:

Your outputs will be in C:Build-OpenSSL-VC-32-dbg. Make sure you rename them to something like libeay32-debug.lib and ssleay32-debug.lib.

Building the 64-bit static libraries

  1. Open the Visual Studio x64 Win64 Command Prompt (2010) (in the Start menu).
  2. cd to your OpenSSL source folder for 64-bit (e.g. cd C:openssl-src-64).
  3. Run the following:

Your outputs will be in C:Build-OpenSSL-VC-64.

Note: The outputs of the 64-bit build are still named libeay32.lib and ssleay32.lib. You’ll have to rename them more sensibly yourself.

Building the 64-bit static libraries with debug symbols

These steps will embed the debug symbols directly into the .lib files. Don’t expect to see any .pdb files.

  1. Open the Visual Studio x64 Win64 Command Prompt (2010).
  2. cd to your OpenSSL source folder for 64-bit (e.g. cd C:openssl-src-64).
  3. Run the following:
  4. In a text editor (like Notepad), open msnt.mak and replace all occurrences of /Zi with /Z7 except on the line starting with ASM. There should be two replacements. 8
  5. Run the following:

Your outputs will be in C:Build-OpenSSL-VC-64-dbg. Make sure you rename them to something like libeay64-debug.lib and ssleay64-debug.lib.

What not to do

I tried every method under the sun to get a Windows build of OpenSSL that would link against Visual Studio projects. I learned a great deal along the way. Here’s what I learned not to do:

  • Don’t blindly follow the Windows 32-bit/64-bit installation instructions provided in the OpenSSL source folder. Get guidance online.
  • Don’t build OpenSSL in Cygwin. It’s easy. It won’t link against Visual Studio.
  • Don’t build OpenSSL in MSYS or MinGW. It’s hard. It won’t link against Visual Studio.
  • Don’t try to use NASM like the Windows installation instructions mention. It’s not necessary for Visual Studio builds. (It only supports 32-bit anyway.)
  • Strawberry Perl doesn’t always work in these weird configurations. ActivePerl seemed more stable.
  • Don’t try to build 32-bit and 64-bit OpenSSL in the same folder. The first build will leave artifacts that will mess up the second build. (Running a clean isn’t enough, apparently.)
  • Don’t try to build 32-bit OpenSSL inside of Visual Studio’s 64-bit command prompt and vice versa. It doesn’t work.

References

These were very helpful places:

Footnotes:

1. Do not use Strawberry Perl (see comments for this post).
2. OpenSSL version 1.0.1c was the latest at the time of writing.
3. 7-zip is good for unzipping .tar.gz files on Windows. It’s a two-step process.
4. OpenSSL’s build scripts are not clever enough to handle two different platform builds in sequence. Separate platform builds must start from scratch.
5. You can find it somewhere in the Start menu.
6. Using ms\ntdll.mak will build the shared library instead.
7. The /Zi option works, but it’s hard to find the right .pdb file without specifying more options. For the sake of simplicity, the /Z7 option just embeds all the debug symbols into the .lib files. Read more here.
8. For the 64-bit build, Visual Studio uses MASM (ml64.exe) to compile assembly code. According to MASM’s documentation, the /Z7 option is not supported.

6 Responses to How to install openssl on windows with visual studio 2015

  1. This post is very useful. When I run
    $ git clone git://git.openssl.org/openssl.git
    I got
    remote: warning: unable to access ‘/root/.config/git/attributes’: Permission denied
    How to fix it? Shall I ignore it?

    • Avatar andrew
      andrew says:

      2
      down vote
      I think your HOME envireonment variable is improperly set.

      From the google group thread,

      the HOME environment variable was set to /root so it looked at /root/.gitconfig or /root/.config/git/config since the unprivileged user didn’t have access to /root it threw an error.

      So the solution was for me to set the HOME env to the user’s HOME directory

  2. Avatar George
    George says:

    I’m working in Windows 10 Command Line.

    C:\ATEST>echo %HOMEPATH%
    \Users\gchen

    C:\ATEST>type \users\gchen\.gitconfig
    [user]
    name = gchen2101
    [user]
    email = chenlongsen@semptian.com
    [filter “lfs”]
    clean = git-lfs clean — %f
    smudge = git-lfs smudge — %f
    required = true
    [credential]

    set HOME=C:\ATEST

    C:\ATEST>git clone git://git.openssl.org/openssl.git
    Cloning into ‘openssl’…
    remote: warning: unable to access ‘/root/.config/git/attributes’: Permission denied
    remote: Counting objects: 217598, done.
    ^Cmote: Compressing objects: 0% (1/48054)
    C:\ATEST>

  3. I was confused with command “msdo_win64a”. I assume it meant “ms\do_win64a.bat”.
    The same is true for “msnt.mak”.
    This blog is very helpful, but it could be even more helpfull