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

在VC中编译和使用OpenSSL

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

一、编译OpenSSL; @1 j8 i- `/ G" [2 z, y1 ?' n
    在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。% `2 f" E2 {, G- ]
    下载最新版本的Perl:http://www.activestate.com/,然后安装之。8 F4 ]3 r8 }! L& Q6 O3 P5 G
    下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。6 W3 s! o6 z, S
    进入openssl源码目录。
" D8 l: b0 z4 m

  1.     cd x:/openssl
    ' l0 B+ R/ w% {8 k$ D8 j6 S8 a8 y
复制代码

    以下为参照该目录下的文件INSTALL.W32的执行过程:
& {& g" S7 C: s( E/ T: G+ \" ~    运行configure:
( v6 Y% E0 q% b  h

  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.asm0 m1 }& X: i. Q/ [3 `) F0 Y# J6 h
  2. tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands8 I' P: \9 S$ |" V% o7 G& Z+ [) m$ w
  3. tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands
    " d+ B0 y0 D' I/ t# y; _
  4. NMAKE : fatal error U1077: 'ml' : return code '0x1'+ C3 o6 S8 F0 m0 _& G1 ~8 P
  5. Stop.
复制代码

    * ^# j+ J0 _' j1 V
    * D" y5 |( q: m) |5 t3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。

! }: r0 U' |! U7 ?+ N9 I

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

    创建Makefile文件:# B' w9 a. l! |- T! s4 n" h

  1.     ms/do_ms1 ?: l0 e. q6 [3 l
复制代码

    编译动态库:
) u6 m( _: b3 {

  1.     nmake -f ms/ntdll.mak/ _' K( `( J2 d9 _2 g
复制代码

    编译静态库:
+ e  m" j: x( m5 @* P

  1.     nmake -f ms/nt.mak
      j$ z4 I' ~% e6 h5 u. I- I
复制代码

    测试动态库:
* O( e5 ?  n4 ]* f

  1.     nmake -f ms/ntdll.mak test$ N# g" M! `' r  y& b# O' R3 e
复制代码

    测试静态库:
- j( S' H+ W3 `# F

  1.     nmake -f ms/nt.mak test
    & o1 v2 F& w& |3 j
复制代码

    安装动态库:* i! {  Q1 L+ Y" W  j3 |5 G: Z

  1.     nmake -f ms/ntdll.mak install# K1 d2 |! b8 \
复制代码

    安装静态库:
3 p7 o  _& k& R* t9 R  J

  1.     nmake -f ms/nt.mak install
    5 Z$ l3 C8 k* x6 v, i9 }
复制代码

    清除上次动态库的编译,以便重新编译:
1 H! W3 x$ d: `- b

  1.     nmake -f ms/ntdll.mak clean
    % }/ e! s1 z3 Z* ~% c2 t
复制代码

    清除上次静态库的编译,以便重新编译:
* u# @+ D. {4 P* w

  1.     nmake -f ms/nt.mak clean
    2 g+ G+ ?: c4 i& \0 w. |
复制代码

二、使用OpenSSL! `6 z% a, z" \! q" t5 g: [
    在VC中配置使用以上的函数库:4 A3 r. C7 x2 K# e; W2 q& ~
    点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。( x* F( u# N$ @* _  G
    在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。  V. d+ t6 R& y/ l; C; w  ^7 G) e( w' B
    然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。


2 P$ ^: S5 p- ]  R% I( P: `+ }$ g# m
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-19 02:14 , Processed in 0.016087 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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