PC端openssl和libevent的编译流程
筹备工作:
1、Perl
倡议应用5.30以上版本,自己在应用时发现28的版本如同在配置openssl的时候有问题。
下载地址:http://strawberryperl.com/
ps:ActivePerl 和 Strawberry Perl 都能够
2、nasm
下载地址:https://www.nasm.us/pub/nasm/stable/
nasm须要配置环境变量
装置后关上vs编译环境(我编译的是vs2010)
验证perl和nasm是否装置胜利
编译openssl
进入openssl-1.0.2j目录
执行:
Perl Configure no-asm VC-WIN32 --prefix=D:\openssl_lib
开始编译
ms\do_nasm(动态库)nmake -f ms\nt.maknmake -f ms\nt.mak testnmake -f ms\nt.mak install
最初生成文件在openssl_lib目录下
Libevent编译
进入libevent-2.0.22-stable目录
替换Makefile.nmake内容如下:
# WATCH OUT! This makefile is a work in progress. -*- makefile -*-## I'm not very knowledgeable about MSVC and nmake beyond their most basic# aspects. If anything here looks wrong to you, please let me know.# If OPENSSL_DIR is not set, builds without OpenSSL support. If you want# OpenSSL support, you can set the OPENSSL_DIR variable to where you# installed OpenSSL. This can be done in the environment:# set OPENSSL_DIR=c:\openssl# Or on the nmake command line:# nmake OPENSSL_DIR=C:\openssl -f Makefile.nmake# Or by uncommenting the following line here in the makefile...# OPENSSL_DIR=c:\openssl!IFDEF OPENSSL_DIRSSL_CFLAGS=/I$(OPENSSL_DIR)\include /DEVENT__HAVE_OPENSSL!ELSESSL_CFLAGS=!ENDIF# Needed for correctnessCFLAGS=/IWIN32-Code /IWIN32-Code/nmake /Iinclude /Icompat /DHAVE_CONFIG_H /DWIN32 /I. $(SSL_CFLAGS)# For optimization and warningsCFLAGS=$(CFLAGS) /Ox /W3 /wd4996 /MTd /nologo # XXXX have a debug modeLIBFLAGS=/nologoCORE_OBJS=event.obj buffer.obj bufferevent.obj bufferevent_sock.obj \bufferevent_pair.obj listener.obj evmap.obj log.obj evutil.obj \strlcpy.obj signal.obj bufferevent_filter.obj evthread.obj \bufferevent_ratelim.obj evutil_rand.obj WIN_OBJS=win32select.obj evthread_win32.obj buffer_iocp.obj \event_iocp.obj bufferevent_async.objEXTRA_OBJS=event_tagging.obj http.obj evdns.obj evrpc.obj!IFDEF OPENSSL_DIRSSL_OBJS=bufferevent_openssl.objSSL_LIBS=libevent_openssl.lib!ELSESSL_OBJS=SSL_LIBS=!ENDIFALL_OBJS=$(CORE_OBJS) $(WIN_OBJS) $(EXTRA_OBJS) $(SSL_OBJS)STATIC_LIBS=libevent_core.lib libevent_extras.lib libevent.lib $(SSL_LIBS)all: static_libs testsstatic_libs: $(STATIC_LIBS)libevent_core.lib: $(CORE_OBJS) $(WIN_OBJS)lib $(LIBFLAGS) $(CORE_OBJS) $(WIN_OBJS) /out:libevent_core.lib libevent_extras.lib: $(EXTRA_OBJS)lib $(LIBFLAGS) $(EXTRA_OBJS) /out:libevent_extras.liblibevent.lib: $(CORE_OBJS) $(WIN_OBJS) $(EXTRA_OBJS)lib $(LIBFLAGS) $(CORE_OBJS) $(EXTRA_OBJS) $(WIN_OBJS) /out:libevent.liblibevent_openssl.lib: $(SSL_OBJS)lib $(LIBFLAGS) $(SSL_OBJS) /out:libevent_openssl.libclean:del $(ALL_OBJS)del $(STATIC_LIBS)tests:!IFDEF OPENSSL_DIR !ELSE !ENDIF
最初执行:
nmake /f Makefile.nmake OPENSSL_DIR=D:\openssl_lib
openssl_lib为下面生成文件门路
最初生成lib文件在以后libevent-2.0.22-stable目录