一、编译OpenSSL
# P M1 S w/ j1 y- ?; s 在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。
2 F* @! l0 X; y 下载最新版本的Perl:http://www.activestate.com/,然后安装之。
( g2 q/ Y3 v* ]6 e! n" V, M 下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。
* A0 u/ S( ?4 j$ e( g 进入openssl源码目录。- k- x2 G9 O( p1 C3 M
- cd x:/openssl
8 C, c+ ?( E) u( [ b& z# D Y
复制代码 以下为参照该目录下的文件INSTALL.W32的执行过程:
- f1 W* k$ E& Q4 T& N, s- z& r 运行configure:
$ }: h }. v6 @: r) U* x7 L; ? U6 [ - 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
# b1 p, o; c J# e3 l4 D/ b% ]" h - tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands4 G3 L8 g8 Q( M- W( ]% V
- tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands9 R' v u/ D- B9 M- ]
- NMAKE : fatal error U1077: 'ml' : return code '0x1'' E6 H+ r9 B; @2 _/ U% h
- Stop.
复制代码
2 R. `# }8 _4 j* U
# ^. Q8 v% K( {! J/ }$ _" E3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。
$ }! L" B' P6 t" x% J: b
运行C:/Program Files/Microsoft Visual Studio/VC98/Bin/VCVARS32.BAT,使windows支持nmake 创建Makefile文件:
j4 y1 c# X. Y4 V - ms/do_ms2 X$ t% C# f! e) y
复制代码 编译动态库:0 g. Y* G3 E0 k+ D$ x' d! h
- nmake -f ms/ntdll.mak
. i& B. D+ Q" b0 q: L
复制代码 编译静态库:0 Y- Y5 F2 g* H6 I
- nmake -f ms/nt.mak
: d! f; M7 Y& Y p- [8 O6 O
复制代码 测试动态库:# ^2 u2 V ^ G+ V7 o+ [: e
- nmake -f ms/ntdll.mak test
9 p, g% z' o$ @! w( a. P$ J. s
复制代码 测试静态库:
- L. H* h7 U8 l: a R" N, d - nmake -f ms/nt.mak test
, v7 v) J, ~- P: g* @
复制代码 安装动态库:
! C- {5 D- D! s - nmake -f ms/ntdll.mak install
! s8 ?' C q5 N, @# K
复制代码 安装静态库:8 T$ n. a. f, c7 l
- nmake -f ms/nt.mak install
1 l5 {# y _ P# c6 V& i. I
复制代码 清除上次动态库的编译,以便重新编译:* |9 ^, Q3 d2 O( s* Z4 }0 A' w" N
- nmake -f ms/ntdll.mak clean
: H, s+ c* S% T/ b( n' P3 c
复制代码 清除上次静态库的编译,以便重新编译:
; l( a, B, O5 I+ z - nmake -f ms/nt.mak clean
7 x' G/ @, l8 j+ ^/ e4 O
复制代码二、使用OpenSSL( y3 f9 W- I E8 G9 S' I9 Y
在VC中配置使用以上的函数库:; P9 T8 J: a8 e6 K# `
点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。- i; E7 h- u! D3 y9 b P
在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。
& h7 A( S, Y0 E$ m0 n" Q 然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。
: m! P6 w) H: l1 @+ k9 O( E |