OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用。对于一般的开发人员而言,在http://slproweb.com/products/Win32OpenSSL.html 上下载已经编译好的OpenSSL库是省力省事的好办法。对于高级的开发用户,他们可能需要适当的修改或者裁剪OpenSSL,那么编译它就成为了一个关键问题。本篇博客就是主要讲述如何早Windows上编译OpenSSL库?

笔者按照一定的步骤成功了编译了OpenSSL库,步骤如下:

http://www.activestate.com/activeperl/downloads 下载并安装ActivePerl。

http://www.nasm.us/ 下载并安装Nasm汇编器。

http://www.openssl.org/下载并安装OpenSSL的最新Release包

编译:
转到$(Visual Studio目录)\VC\bin目录下执行 vcvars32.bat 以配置环境变量或从开始进入VS的Visual Studio Tools根据需要选择VS2013 x86 本机工具命令提示。(开始我手贱打开另一个cmd去运行命令,出现缺失windows.h等类似错误,请教大神时发现,配置的环境变量只对当前cmd有效,汗)如图:


以下为参照该目录下的文件INSTALL.W32的执行过程:
-运行configure :

编译Release
    >perl Configure VC-WIN32 --prefix=c:\some\openssl\dir

编译Debug

如果你需要编译一个Debug版的,发须先修改 ms\do_ms.bat 找到这两行(第2,3行)
perlutil\mk1mf.pl no-asm VC-WIN32 >ms\nt.mak
perlutil\mk1mf.pl dll no-asm VC-WIN32 >ms\ntdll.mak
修改为
perl util\mk1mf.pl no-asm debug VC-WIN32>ms\nt.mak
perl util\mk1mf.pl dll no-asm debug VC-WIN32 >ms\ntdll.mak

如果你不想用汇编语言加上 no-asm
创建Makefile文件:
    >ms\do_ms
    编译动态库:如果编译成功,最后的输出都在out32dll目录下
    >nmake -f ms\ntdll.mak
    编译静态库:输出在out32目录下
    nmake -f ms\nt.mak
    测试库:测试成功返回passed all tests
    nmake -f ms\ntdll.mak test
    安装库:
    nmake -f ms\ntdll.mak install
    清除上次库的编译,以便重新编译:
    nmake -f ms\ntdll.mak clean

在项目包含目录添加include目录,附加目录添加lib目录

测试一下:

#include "stdafx.h"
#include <string>   
#include <iomanip>  
#include <iostream>  
#include <openssl/md5.h> 
#include <openssl/sha.h>
using namespace std;
#pragma comment(lib, "libeay32.lib")  
#pragma comment(lib, "ssleay32.lib")  
int main(int argc, char* argv[])
{
	std::string str = "1234";
	unsigned char md[MD5_DIGEST_LENGTH];
	char tmp[3] = { 0 };
	MD5((const unsigned char*)str.c_str(), str.size(), md);
	cout << "MD5 : ";
	for (int i = 0; i < MD5_DIGEST_LENGTH; i++)
	{
		cout << setw(2) << setfill('0') << hex << (int)(md[i]);
	}
	cout << endl;
	system("PAUSE");
	return 0;
}

如何在 Windows 下编译 OpenSSL?

OpenSSL在Windows下的编译

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐