找回密码
 注册
搜索
查看: 3543|回复: 0

在VC中编译和使用OpenSSL

[复制链接]
发表于 2014-12-17 21:14:18 | 显示全部楼层 |阅读模式

一、编译OpenSSL7 T, \' F8 C% ^) L1 k" z
    在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。
! F  i4 f' o' I8 i9 A: Q9 u$ d; L: s    下载最新版本的Perl:http://www.activestate.com/,然后安装之。
6 z4 a7 v, n* `' I% Q' @, j    下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。
. I. H% |8 D  S% c1 z    进入openssl源码目录。
2 n& J7 c$ U; P5 Y1 h( D3 {) ~

  1.     cd x:/openssl
    % f1 T, t, F2 R! Q9 p" b& x
复制代码

    以下为参照该目录下的文件INSTALL.W32的执行过程:
) C1 |: ~1 n* h7 I: L    运行configure:$ p) b- G* ?8 S; C

  1. 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参数,关闭汇编模式,否则会出现类似如下错误:
  1. Assembling: tmp32\sha1-586.asm
    & p  z" u, p# V- o2 Y+ f6 F
  2. tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands
    5 P. x( P$ E# ^" G4 V6 p2 |, e( U
  3. tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands
    2 w% x6 K3 }) h3 C
  4. NMAKE : fatal error U1077: 'ml' : return code '0x1'
    2 U1 A7 |1 d! r5 }$ f: i3 r
  5. Stop.
复制代码

    * y8 c# r& t4 n5 _, |( Z
    ; r' v( O8 e. ]- h; N1 I3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。


0 ~9 |6 T0 J% _% j" }

     运行C:/Program Files/Microsoft Visual Studio/VC98/Bin/VCVARS32.BAT,使windows支持nmake

    创建Makefile文件:% I% j2 F, E% u, b& Z

  1.     ms/do_ms6 J/ Z* N6 y$ G: W$ B2 s; {
复制代码

    编译动态库:
1 q1 J+ C  Y6 T

  1.     nmake -f ms/ntdll.mak
    * ^% X, g$ C5 N; Z  P6 g
复制代码

    编译静态库:
' R% W8 L, n' w) x

  1.     nmake -f ms/nt.mak/ r3 A2 Y- B' {$ v2 Q% `
复制代码

    测试动态库:
% i3 u2 m( b* X" M( G

  1.     nmake -f ms/ntdll.mak test) L3 Q/ ?8 V! ]" n" i3 b# _
复制代码

    测试静态库:+ S8 H) @3 |0 H) l

  1.     nmake -f ms/nt.mak test! ?4 L% C; @( u& M7 x
复制代码

    安装动态库:
- n& _7 \/ w6 i

  1.     nmake -f ms/ntdll.mak install0 `8 I7 ?8 \6 @+ t! W; Q
复制代码

    安装静态库:, V8 a. c$ j5 m+ m

  1.     nmake -f ms/nt.mak install! X2 q" P' Z9 F) L$ s
复制代码

    清除上次动态库的编译,以便重新编译:
' I6 T; E. j- G/ k

  1.     nmake -f ms/ntdll.mak clean: P: f6 s6 m; p2 Z: F- {, H; A
复制代码

    清除上次静态库的编译,以便重新编译:
7 i1 u6 ]9 Z" ~) B$ m7 x

  1.     nmake -f ms/nt.mak clean) i$ W  M4 n  ~# {" L) C
复制代码

二、使用OpenSSL
1 A9 e% n3 p9 A% }* O: h    在VC中配置使用以上的函数库:
/ W* q4 n" _' j7 a    点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。5 w3 S  R# S2 v+ V) N
    在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。1 I" `# C( ^6 O$ i/ a! f* W5 p
    然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。


( L( l# @: N3 ^' ]) V7 n% [$ M% o' j
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2026-6-18 02:48 , Processed in 0.017857 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表