PC端openssl和libevent的编译流程

简介: 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是否安装成功


2.png


编译openssl


进入openssl-1.0.2j目录


执行:


Perl Configure no-asm VC-WIN32 --prefix=D:\openssl_lib


开始编译


ms\do_nasm
(静态库)
nmake -f ms\nt.mak
nmake -f ms\nt.mak test
nmake -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_DIR
SSL_CFLAGS=/I$(OPENSSL_DIR)\include /DEVENT__HAVE_OPENSSL
!ELSE
SSL_CFLAGS=
!ENDIF
# Needed for correctness
CFLAGS=/IWIN32-Code /IWIN32-Code/nmake /Iinclude /Icompat /DHAVE_CONFIG_H  /DWIN32 /I. $(SSL_CFLAGS)
# For optimization and warnings
CFLAGS=$(CFLAGS) /Ox /W3 /wd4996 /MTd /nologo 
# XXXX have a debug mode
LIBFLAGS=/nologo
CORE_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.obj
EXTRA_OBJS=event_tagging.obj http.obj evdns.obj evrpc.obj
!IFDEF OPENSSL_DIR
SSL_OBJS=bufferevent_openssl.obj
SSL_LIBS=libevent_openssl.lib
!ELSE
SSL_OBJS=
SSL_LIBS=
!ENDIF
ALL_OBJS=$(CORE_OBJS) $(WIN_OBJS) $(EXTRA_OBJS) $(SSL_OBJS)
STATIC_LIBS=libevent_core.lib libevent_extras.lib libevent.lib $(SSL_LIBS)
all: static_libs tests
static_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.lib
libevent.lib: $(CORE_OBJS) $(WIN_OBJS) $(EXTRA_OBJS)
lib $(LIBFLAGS) $(CORE_OBJS) $(EXTRA_OBJS) $(WIN_OBJS) /out:libevent.lib
libevent_openssl.lib: $(SSL_OBJS)
lib $(LIBFLAGS) $(SSL_OBJS) /out:libevent_openssl.lib
clean:
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目录

目录
相关文章
|
5月前
|
Linux Perl
源码安装openssl遇到的一些问题及解决方式
本文总结了在源码安装openssl过程中遇到的一些问题及其解决方法,包括缺少libssl.so.1.1库文件、缺少Perl模块以及权限不足时如何指定安装目录等问题。
1392 0
|
消息中间件 Linux 网络安全
让终端支持https,移植OpenSSL和libcurl到嵌入式linux,遇到的问题总结
让终端支持https,移植OpenSSL和libcurl到嵌入式linux,遇到的问题总结
|
Ubuntu 物联网 编译器
iOS编译openssl实践
之前建设的跨平台全链路智能语音交互系统一直只跑在Android系统(主要是Iot设备),没有iOS业务场景,最近经过不断的努力,终于要把这个能力推广到B端APP,面向B端用户,这个时候就有了iOS的述求,毕竟从能力建设之初就吹出去了,系统是跨平台的,这个时候不能掉链子。
581 0
|
Shell 编译器 Linux
zlib-1.2.11库、libpng-1.6.36库编译及交叉编译 —— 附带shell编译脚本及源码
zlib-1.2.11库、libpng-1.6.36库编译及交叉编译 —— 附带shell编译脚本及源码
649 0
zlib-1.2.11库、libpng-1.6.36库编译及交叉编译 —— 附带shell编译脚本及源码
|
Linux
LINUX下载编译libcurl
LINUX下载编译libcurl
97 0
|
Linux
LINUX下载编译OpenSSL
LINUX下载编译OpenSSL
159 0
|
Linux C语言
Linux中gcc4.8.5升级到gcc5.4.0用已经编译好的安装包升级(重点是不用编译安装,可以更省时)
如有遇到<font color=red size=4>没有网络的情况下</font>可以选择用这种方法来做,前提是要先下载好这个包。
277 0
Linux中gcc4.8.5升级到gcc5.4.0用已经编译好的安装包升级(重点是不用编译安装,可以更省时)
|
编解码 算法 安全
Qt开发笔记:OpenSSL库介绍、windows上mingw32版本的OpenSSL编译模块化
Qt开发笔记:OpenSSL库介绍、windows上mingw32版本的OpenSSL编译模块化
Qt开发笔记:OpenSSL库介绍、windows上mingw32版本的OpenSSL编译模块化
|
Linux C语言
arm开发板更新gcc/gcc++|Deb bain 更新 gcc,无需编译直接更新gcc三
arm开发板更新gcc/gcc++|Deb bain 更新 gcc,无需编译直接更新gcc三
467 0
arm开发板更新gcc/gcc++|Deb bain 更新 gcc,无需编译直接更新gcc三
|
C++ Windows
64bit libcurl.lib生成步骤及注意事项详解
1、[前提]编译32bit libcurl.lib 参考文档:Using-libcurl-with-SSH-support-in-Visual-Studio-2010.pdf。下载地址:http://curl.haxx.se/libcurl/c/
459 0
64bit libcurl.lib生成步骤及注意事项详解