|
一、编译OpenSSL f0 x8 m( d, I& w
在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。
3 y# v, v3 o$ C- B# V6 p( S 下载最新版本的Perl:http://www.activestate.com/,然后安装之。* D4 z/ u" J3 E$ C: g6 J
下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。3 X9 R! ]6 t, C& ^7 \
进入openssl源码目录。
# }+ z. i' S/ O( P - cd x:/openssl7 K9 e& e; W- M; ^8 i
复制代码 以下为参照该目录下的文件INSTALL.W32的执行过程:/ i' c0 P, t2 e# @4 j) V O. t
运行configure: B6 b$ C$ ^1 X$ q0 Z4 d
- 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.asm6 C# o1 m) E" `
- tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands) g6 {1 B E- Y0 W1 J, C) n7 r. O
- tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands
6 P1 a9 \7 K" G6 X - NMAKE : fatal error U1077: 'ml' : return code '0x1'
. G8 D7 g6 y9 H* Q, b9 v! p* I2 y - Stop.
复制代码
6 z3 _: r8 ^. W
: G8 B* k- L$ B2 n$ R# m0 P3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。
' V v- H, [. k$ F7 c2 u' \+ }9 D
运行C:/Program Files/Microsoft Visual Studio/VC98/Bin/VCVARS32.BAT,使windows支持nmake 创建Makefile文件:) z& g* G2 q! t/ `1 v' b
- ms/do_ms
5 B" ~- H+ f' n7 @2 G
复制代码 编译动态库:
- f$ e9 F Q3 H! {! p4 ^: m - nmake -f ms/ntdll.mak
9 ]2 W E9 T( r; U+ Z/ v9 x1 G* d1 _
复制代码 编译静态库:/ L+ U q! W0 j$ g! e
- nmake -f ms/nt.mak
5 q- X: {9 P+ A7 J# ^. ^
复制代码 测试动态库:' ?0 C2 ~/ Z% ^% z' D1 h
- nmake -f ms/ntdll.mak test
" q& w( w+ L9 Y1 D5 C
复制代码 测试静态库:$ F; J8 B3 y- E8 [3 t
- nmake -f ms/nt.mak test
8 v" U1 ]# \. s. V: m- W9 ~4 i
复制代码 安装动态库:
. V9 D: D- t' p c) {" z - nmake -f ms/ntdll.mak install t. A: x# v( e) f6 P! B# _: {* d
复制代码 安装静态库:
% c, _, h' K J: p6 s+ ?( D1 f - nmake -f ms/nt.mak install
. S y$ x# \: \6 |2 D
复制代码 清除上次动态库的编译,以便重新编译:
5 w& y9 h, O# ^/ X - nmake -f ms/ntdll.mak clean
! y8 F7 a) ~4 e$ G# T
复制代码 清除上次静态库的编译,以便重新编译:5 q' n. A! L7 F' w( i3 x
- nmake -f ms/nt.mak clean
% K1 X0 {: ~, Q
复制代码二、使用OpenSSL
4 p% p9 [" _, x* Q# c 在VC中配置使用以上的函数库:* D% N7 h6 A) v7 H" A* L$ S+ O' t# L
点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。
0 y; V1 l) }: k& N8 E 在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。' x, J% O' F$ l. ?* u
然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。
# M/ u/ b( i3 ^8 d I4 P |