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

在VC中编译和使用OpenSSL

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

一、编译OpenSSL& L3 u4 V  M% n" }* g
    在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。
$ W2 F; N2 D0 F  j1 c8 f$ F! o3 D! }    下载最新版本的Perl:http://www.activestate.com/,然后安装之。5 B2 k  a' r9 m3 g$ s! `2 A, d
    下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。
- t. A# b7 o1 f    进入openssl源码目录。
/ ~+ T/ ~( k) k; H/ u

  1.     cd x:/openssl$ {  ]4 d& Y! _9 t# K' c& h
复制代码

    以下为参照该目录下的文件INSTALL.W32的执行过程:
/ x9 U0 h7 i) u% ]" C    运行configure:
+ t& c0 @/ x; P$ y7 ?9 s

  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.asm9 _9 q# @( W, ^& O  ~
  2. tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands* P( t& J( z0 e: _+ k/ @3 P7 H
  3. tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands
    / Y5 M) U# _( k' ~0 n& a2 U1 N
  4. NMAKE : fatal error U1077: 'ml' : return code '0x1'
    / s" t7 v# v/ V1 \  A
  5. Stop.
复制代码
    0 n- P0 q! u" S: B8 f
    & E  @% ^0 X8 w
    3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。


7 n5 I5 d8 e5 c0 J, s4 d

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

    创建Makefile文件:1 `7 f7 V8 |2 H9 ~

  1.     ms/do_ms
    * `6 b2 x2 x1 K) E
复制代码

    编译动态库:
) J2 R8 a& q3 E# U- W3 P

  1.     nmake -f ms/ntdll.mak
    8 h! ~  v  y" J; b% l
复制代码

    编译静态库:, r  v  h9 N* R! b

  1.     nmake -f ms/nt.mak
    ; T  |/ P2 U) C
复制代码

    测试动态库:7 m% @% `$ l, A$ G

  1.     nmake -f ms/ntdll.mak test  l' m9 m5 E% H
复制代码

    测试静态库:
& f5 W4 h) F. k7 E; v6 w

  1.     nmake -f ms/nt.mak test& J# i6 n1 T* @% Y  w3 n* ]6 Q
复制代码

    安装动态库:
3 }! w  E" K0 |/ z' Z8 c5 ]

  1.     nmake -f ms/ntdll.mak install7 Q, D7 i, Z3 e- a
复制代码

    安装静态库:, G8 ~6 h  u$ B, K: l  X, P! S

  1.     nmake -f ms/nt.mak install
    0 A6 p; Z/ ^0 o( `" E0 f% \* Q
复制代码

    清除上次动态库的编译,以便重新编译:, F# Q/ F, m) z- X

  1.     nmake -f ms/ntdll.mak clean2 O& b4 G, ~2 H) {' N; \
复制代码

    清除上次静态库的编译,以便重新编译:9 x/ ?; {" Y5 t4 s9 ^. _

  1.     nmake -f ms/nt.mak clean$ H* y5 A% \9 U
复制代码

二、使用OpenSSL+ T& f1 h2 a3 Y9 m+ L
    在VC中配置使用以上的函数库:% z+ a/ k/ V/ ^/ ^
    点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。
5 Q7 ?5 d  y; [8 c% z    在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。) p2 j) Y( [5 }/ k) j- |# f
    然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。


, J  C. m5 a" [: R# S* g
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-18 06:55 , Processed in 0.018058 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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