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

在VC中编译和使用OpenSSL

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

一、编译OpenSSL
0 j& q" X# W  v3 N/ h    在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。1 l; `: a) _( y5 @
    下载最新版本的Perl:http://www.activestate.com/,然后安装之。& ?' E$ L2 {. G. r
    下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。
6 ~( C% m6 z. Y7 O9 v" V    进入openssl源码目录。
* d: O5 Y  K: X' f! {

  1.     cd x:/openssl
    0 I, w5 m' d8 e/ |4 G
复制代码

    以下为参照该目录下的文件INSTALL.W32的执行过程:$ ~5 P! m2 J* t$ d; m# a
    运行configure:8 p1 E2 a% X& Z. O$ e% U3 J

  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* O3 e  P0 @) [
  2. tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands, i: G  q. D4 X  Y2 _1 S2 B
  3. tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands7 R5 s, f' w  H7 t( S
  4. NMAKE : fatal error U1077: 'ml' : return code '0x1'
    + t: q' k9 W& w2 p; Z6 ]  A# C
  5. Stop.
复制代码

    % ~+ v$ c9 ], f) E% p) \# `# o( ^$ ~* r$ _8 {6 w" E
    3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。

4 O. {' K/ \1 e9 c

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

    创建Makefile文件:
; n% V( t' s) ~: n

  1.     ms/do_ms
    3 g  K7 l+ T9 i+ `" b! y$ U6 g8 g1 X
复制代码

    编译动态库:
. w4 S( q( A) N

  1.     nmake -f ms/ntdll.mak
    # D$ Q' j' a: L2 U! P5 o4 d
复制代码

    编译静态库:
, a& \1 ]# C$ q4 r9 c4 z

  1.     nmake -f ms/nt.mak! s+ {& D3 A2 y, B: Y' V! D# F$ Z
复制代码

    测试动态库:- c0 U+ k+ L$ L% y/ |

  1.     nmake -f ms/ntdll.mak test
    3 ]0 R* ^; `0 Q; I& ~
复制代码

    测试静态库:2 V- |6 k/ F; X! T& N/ W( u

  1.     nmake -f ms/nt.mak test9 ]: k) }2 n% y5 x
复制代码

    安装动态库:
0 L& Z) Q) X) T6 T8 `

  1.     nmake -f ms/ntdll.mak install
    . E+ j+ {+ }" _$ d6 k! _# F6 c
复制代码

    安装静态库:& p' ?) }) U3 W" X

  1.     nmake -f ms/nt.mak install$ F8 P0 m, C$ _2 C" K  m
复制代码

    清除上次动态库的编译,以便重新编译:
+ z& s' U! t1 x! \' k, o" P

  1.     nmake -f ms/ntdll.mak clean
    . K7 E, o) x: u& v9 w/ s
复制代码

    清除上次静态库的编译,以便重新编译:1 y: b" |, j. W. B4 q! j5 Q

  1.     nmake -f ms/nt.mak clean, g0 |0 L/ Q. h9 b+ W' f# J$ E
复制代码

二、使用OpenSSL
. C8 c4 l! \. R' Q, V    在VC中配置使用以上的函数库:
) c* c! |& F* V2 |    点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。8 F  H4 t3 l0 v3 B2 ~! H
    在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。; n& I" D" |2 Q! M4 I+ |  Q# J
    然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。


& B: {, Y6 s5 t- k4 J3 f' L
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-30 06:30 , Processed in 0.034646 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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