|
一、编译OpenSSL
* }) h" v1 i& p3 N* g* L8 S 在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。" L6 j8 x% v: L8 M8 F
下载最新版本的Perl:http://www.activestate.com/,然后安装之。
! Q& d" ?0 `- F' x& _ 下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。
+ g) V2 Z5 o7 x* T! b 进入openssl源码目录。' e; h( `' K2 U( y. Y
- cd x:/openssl
: L0 B7 j$ h' G+ e) L3 ~7 n
复制代码 以下为参照该目录下的文件INSTALL.W32的执行过程:" C7 X5 e8 f: N ?" ^: H- U+ ~' ~
运行configure:" Q* s. l5 |8 t! _( L+ ]
- perl Configure VC-WIN32 no-asm
复制代码1、[编译类型]可以选择以下: 参数 | 含义 | debug-VC-WIN32 | 编译32位debug版本 | VC-WIN32 | 编译32位release版本 | debug-VC-WIN64A | 编译64位debug版本 | VC-WIN64A | 编译64位release版本 | 2、设置编译类型的时候千万别忘记no-asm参数,关闭汇编模式,否则会出现类似如下错误:- Assembling: tmp32\sha1-586.asm7 u U8 l0 T& k
- tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands
- E- `: \- q% J4 W' p - tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands# H& `/ `0 ]; i- t' m
- NMAKE : fatal error U1077: 'ml' : return code '0x1') U7 H. R. E1 Y1 U4 Y7 G y" O; n
- Stop.
复制代码# b5 \! U7 `/ I- g9 l
/ l% S6 T7 F& e, q
3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。
" J" W' W n" J4 j% v1 w9 [, c a( z& D
运行C:/Program Files/Microsoft Visual Studio/VC98/Bin/VCVARS32.BAT,使windows支持nmake 创建Makefile文件: ~/ J. U5 Y* z' {+ I4 h1 T4 l
- ms/do_ms
: l4 w4 C3 r& R+ m1 m& u
复制代码 编译动态库:: W5 ~* \! |( j6 Z; R
- nmake -f ms/ntdll.mak
6 K8 J& }. ^" E: a9 F" m
复制代码 编译静态库:5 ~$ K6 B" H3 Z( e" I' W
- nmake -f ms/nt.mak
, H* |9 i! J. Y( ~" |
复制代码 测试动态库:6 N+ d% W9 ~ ^6 {( v% v
- nmake -f ms/ntdll.mak test7 f' T6 s: ^. ~/ |: F; }0 B* t6 X
复制代码 测试静态库:
4 G X- k2 I0 _$ j# i1 s8 [5 L - nmake -f ms/nt.mak test
4 s' u9 F- N2 z- q: f
复制代码 安装动态库:% k% n1 ~( Q6 Y2 u
- nmake -f ms/ntdll.mak install
# d, |+ p" T- E$ \' l r1 M1 X Y
复制代码 安装静态库:
5 o1 @4 R! e0 m7 V& Z, M - nmake -f ms/nt.mak install, W6 k/ B8 K7 ^, x
复制代码 清除上次动态库的编译,以便重新编译:* q8 x1 P! G# J* x+ o- J
- nmake -f ms/ntdll.mak clean, I# Z: r3 P3 r" K
复制代码 清除上次静态库的编译,以便重新编译:9 K5 Z5 C. w, C3 F, ^0 s7 J% e. o/ j
- nmake -f ms/nt.mak clean
3 h; d2 U& _5 }0 J( i7 s' |8 z
复制代码二、使用OpenSSL
! O4 i, L/ D) K4 f- \& r3 B 在VC中配置使用以上的函数库:
% A2 L: ^" w! ~4 s: v 点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。
3 N3 ?& T* b$ |+ M1 ] 在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。
: t5 t0 {9 a/ k5 H 然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。 ! L( A5 e- s x$ A k7 r
|