|
一、编译OpenSSL
, t8 A; G7 J8 u F; w. }0 l 在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。
. U7 t: i2 U/ i7 o8 A3 _) e 下载最新版本的Perl:http://www.activestate.com/,然后安装之。
& j& N7 o) e) G/ J2 M( z. Z 下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。
/ i S# x3 j* ]' P) _ o 进入openssl源码目录。
8 n6 V* C6 j4 Q! b' G1 b - cd x:/openssl
# | c7 v8 U5 M$ x* x& C
复制代码 以下为参照该目录下的文件INSTALL.W32的执行过程:4 v( X; I/ H$ Z! ~, n
运行configure:! m& _+ k8 l1 K2 \8 l6 K! b
- 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* y& @5 E9 F( j5 n- Z
- tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands1 o" `) b9 O, `2 j' z' F' n& M; K
- tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands
, y8 [4 W, g0 f+ s" | - NMAKE : fatal error U1077: 'ml' : return code '0x1'
: ~- ?4 A$ x1 E4 p7 k - Stop.
复制代码* b' D: ^6 W4 i* W
3 W Z1 @! ~+ `+ S8 i. f4 P# I
3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。
+ j( t6 @+ }( H9 K0 I
运行C:/Program Files/Microsoft Visual Studio/VC98/Bin/VCVARS32.BAT,使windows支持nmake 创建Makefile文件:
$ y' N9 W! v& M$ y, f1 m5 i - ms/do_ms
$ g( E6 }1 b/ F& c4 X1 p y' M
复制代码 编译动态库:
. Y N( g3 H# E2 k - nmake -f ms/ntdll.mak
5 ^; f! u3 C' I( X! Z" U7 W
复制代码 编译静态库:
( t& F# N3 v$ v9 F% e; a7 N - nmake -f ms/nt.mak
p( K% l; C; q, a$ t* z* {
复制代码 测试动态库:
5 M0 @) r+ `/ J, O1 e5 ^ - nmake -f ms/ntdll.mak test7 p: K* ]0 g# M* L# F
复制代码 测试静态库:
T$ |0 H) e9 B - nmake -f ms/nt.mak test
6 t: Z$ F6 l/ L; o& I: h: g( Q0 q
复制代码 安装动态库:
$ V% Z3 X; z9 u6 b9 \( b( u - nmake -f ms/ntdll.mak install
: R; E% G3 O$ b' B
复制代码 安装静态库:
( G- t2 K- ~* T# ^8 P2 a - nmake -f ms/nt.mak install8 W+ i* _* o0 S6 G/ M: V
复制代码 清除上次动态库的编译,以便重新编译:
; a/ D1 V- x% _8 @ - nmake -f ms/ntdll.mak clean
1 K. `2 X5 `7 D+ v
复制代码 清除上次静态库的编译,以便重新编译:
, U1 s {! @' Y - nmake -f ms/nt.mak clean
( T* y7 f5 L q. O
复制代码二、使用OpenSSL ]) E& ^; r, F6 q! \) E
在VC中配置使用以上的函数库:" ~2 t p3 P- p+ Q* e! i( {
点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。! c5 q# x p% _ T) J2 ]+ o
在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。
3 |) e( [& ?* |# `" N4 S 然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。 - w# C- r6 b9 \2 S$ B0 [
|