openssl-1.0.0d-static-lib编译过程
openssl编译成静态库, 包含进工程的好处是可以避免系统中其他openssl版本的影响.
系统中有很多第三方的程序在使用openssl.
openssl工程下载点: http://openssl.org/source/openssl-1.0.0d.tar.gz
openssl-1.0.0d.tar.gz解压到 D:\openssl-1.0.0d
建立d:\openssl-1.0.0d-static-lib, 用于存放静态编译后的输出文件.
win32下编译openssl需要的perl环境: ActivePerl-5.10.0.1003-MSWin32-x86-285500.msi
下载点: http://download.csdn.net/source/3573478
运行Visual Studio 2005 Command Prompt
D:\openssl-1.0.0d>perl ConfigureVC-WIN32 no-asm --prefix=d:\openssl-1.0.0d-static-lib
D:\openssl-1.0.0d>perlConfigure VC-WIN32 no-asm --prefix=d:\openssl-1.0.0d-stat
ic-lib
Configuring forVC-WIN32
no-asm [option] OPENSSL_NO_ASM
no-gmp [default] OPENSSL_NO_GMP (skip dir)
no-jpake [experimental] OPENSSL_NO_JPAKE (skipdir)
no-krb5 [krb5-flavor not specified]OPENSSL_NO_KRB5
no-md2 [default] OPENSSL_NO_MD2 (skip dir)
no-rc5 [default] OPENSSL_NO_RC5 (skip dir)
no-rfc3779 [default] OPENSSL_NO_RFC3779 (skip dir)
no-shared [default]
no-store [experimental] OPENSSL_NO_STORE (skipdir)
no-zlib [default]
no-zlib-dynamic [default]
IsMK1MF=1
CC =cl
CFLAG =-DOPENSSL_THREADS -DDSO_WIN32 -W3 -WX -Gs0 -GF -Gy -nologo-DOPE
NSSL_SYSNAME_WIN32-DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE
EX_LIBS =
CPUID_OBJ =mem_clr.o
BN_ASM =bn_asm.o
DES_ENC =des_enc.o fcrypt_b.o
AES_ENC =aes_core.o aes_cbc.o
BF_ENC =bf_enc.o
CAST_ENC =c_enc.o
RC4_ENC =rc4_enc.o rc4_skey.o
RC5_ENC =rc5_enc.o
MD5_OBJ_ASM =
SHA1_OBJ_ASM =
RMD160_OBJ_ASM=
CMLL_ENC= =camellia.o cmll_misc.o cmll_cbc.o
PROCESSOR =
RANLIB =true
ARFLAGS =
PERL =perl
THIRTY_TWO_BIT mode
BN_LLONG mode
RC4_INDEX mode
RC4_CHUNK isundefined
Configured forVC-WIN32.
生成make文件
D:\openssl-1.0.0d> ms\do_ms
D:\openssl-1.0.0d>ms\do_ms
D:\openssl-1.0.0d>perlutil\mkfiles.pl 1>MINFO
D:\openssl-1.0.0d>perlutil\mk1mf.pl no-asm VC-WIN32 1>ms\nt.mak
D:\openssl-1.0.0d>perlutil\mk1mf.pl dll no-asm VC-WIN32 1>ms\ntdll.mak
D:\openssl-1.0.0d>ifx == x goto skipce
D:\openssl-1.0.0d>perlutil\mkdef.pl 32 libeay 1>ms\libeay32.def
D:\openssl-1.0.0d>perlutil\mkdef.pl 32 ssleay 1>ms\ssleay32.def
静态编译openssl
nt.mak 已经使用了 /MT 选项, 主工程中也要使用/MT选项.
nmake -f ms\nt.mak
测试编译结果
nmake -f ms\nt.mak test
看到测试结果如下, 全部通过测试
passed all tests
安装编译后的静态库
nmake -f ms\nt.mak install
安装后的openssl静态库目录如下:
D:\openssl-1.0.0d-static-lib>tree
卷 D250G1 的文件夹 PATH 列表
卷序列号码为 006400308CB1:520D
D:.
├─bin
├─include
│ └─openssl
├─lib
└─ssl
在工程中包含的库列表:
#pragma comment(lib, "User32.lib")
#pragma comment(lib, "Advapi32.lib")
#pragma comment(lib, "Gdi32.lib")
#pragma comment(lib, "Crypt32.lib")
#pragma comment(lib, "libeay32.lib")
#pragma comment(lib, "ssleay32.lib")
参考资料:
http://www.cnblogs.com/gleam/archive/2008/05/07/1187154.html