一、编译OpenSSL( w7 G- F G, u8 g( [1 v
在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。
: ^; H& W. f& X5 t( R/ d" X 下载最新版本的Perl:http://www.activestate.com/,然后安装之。3 [5 u( K: G8 f- @3 }
下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。
2 B, A0 ]( e I& B$ K( _ 进入openssl源码目录。; ]* Q1 \+ g7 v/ R! i. _
- cd x:/openssl. H/ \( j9 j9 c; D/ G' Q
复制代码 以下为参照该目录下的文件INSTALL.W32的执行过程:
5 H: B: L& J% R 运行configure:
! J: E" B* H: ?* @ - 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.asm! g b* W d: F7 f% ?
- tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands6 w, C9 i* O8 W9 ~
- tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands
6 M R( r* |0 T5 z8 n/ F; S4 ^ - NMAKE : fatal error U1077: 'ml' : return code '0x1'
2 B# |8 H4 l- a4 i& s9 w- @4 B - Stop.
复制代码
- H9 c$ P% |6 f/ H; z5 s+ G' w0 j# S6 d- [: i) E
3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。
2 Y& g) _: ~; q
运行C:/Program Files/Microsoft Visual Studio/VC98/Bin/VCVARS32.BAT,使windows支持nmake 创建Makefile文件:
- w9 ]- ]1 ]2 M, s( h 编译动态库:. s+ b6 Z. \0 s1 [" A2 s5 M; B
- nmake -f ms/ntdll.mak
# d. `% f. M0 W/ y
复制代码 编译静态库:) r, ~5 K& g$ ^* H# A2 p+ K# z
- nmake -f ms/nt.mak* B7 `) t% x s: |/ U2 o
复制代码 测试动态库:. p+ s- H& X1 @8 w8 T, g6 N
- nmake -f ms/ntdll.mak test
5 P" T/ Q6 y7 Y- Y& U: }. z" F0 {( H
复制代码 测试静态库:! z0 B- X. n0 G0 Y" e9 r
- nmake -f ms/nt.mak test" @% U* ^: }+ n
复制代码 安装动态库:
; t9 ?! v8 O3 |2 p; C% W - nmake -f ms/ntdll.mak install
3 [; Y6 r8 N! m8 G3 b
复制代码 安装静态库:; z" X* L6 n8 `! {
- nmake -f ms/nt.mak install
) P* d! D \' p
复制代码 清除上次动态库的编译,以便重新编译:
/ d6 K% C. R6 q3 g - nmake -f ms/ntdll.mak clean0 _7 r' \* V/ w- ~" c! \
复制代码 清除上次静态库的编译,以便重新编译:0 |" [# @# Y. d1 a5 F
- nmake -f ms/nt.mak clean3 M1 h; ^9 m1 H
复制代码二、使用OpenSSL7 ]& q2 ^: @- |9 T, ~
在VC中配置使用以上的函数库:
; }+ d- h5 E5 @. Y; p1 N) Q1 r 点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。6 ` _5 ?+ G- O. ]+ Z# F
在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。4 Q r# Y8 |2 x# q
然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。 ! I, j* k/ D0 J; v, l
|