找回密码
 注册
查看: 3779|回复: 0

在VC中编译和使用OpenSSL

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

一、编译OpenSSL
) L) k$ ~& `! h* C) q    在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。- Z# w; q7 A+ X
    下载最新版本的Perl:http://www.activestate.com/,然后安装之。
! y6 g( C8 v/ N" [# P8 L+ F    下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。7 c6 P8 N8 d4 z! G0 u
    进入openssl源码目录。
9 }, a/ p; ?% n5 `+ m- Y

  1.     cd x:/openssl
    8 q$ P% }) P( [
复制代码

    以下为参照该目录下的文件INSTALL.W32的执行过程:
( o* _" A- H. [# r$ G# Q7 l    运行configure:5 C2 x2 k. V4 g$ j' J- ]+ y" n

  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- O, J5 P! p2 \7 d' o3 m
  2. tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands$ M* u) o% O8 F' }
  3. tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands  u6 }& Q. H3 t, I" r
  4. NMAKE : fatal error U1077: 'ml' : return code '0x1'
    2 a7 B* Z+ Q8 o" w% Z6 M
  5. Stop.
复制代码
    % v4 E$ G" |# U

    ) ~, l: t7 Y( O- m. {; l3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。


$ A8 q2 ?& l0 J

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

    创建Makefile文件:
  O# o8 D5 S. e' A1 F# ?

  1.     ms/do_ms- U' J& J2 l5 j! |& u
复制代码

    编译动态库:% B( }& Q) ]0 N' L0 z+ Z

  1.     nmake -f ms/ntdll.mak
    $ u1 ?5 G, P0 O. l: v7 _0 L) {. N
复制代码

    编译静态库:
& i) ?/ C+ o- w/ H8 d8 {

  1.     nmake -f ms/nt.mak9 b- e; o; j4 j3 _
复制代码

    测试动态库:! i; k- g& h, X* o" ]8 E" U. k3 s

  1.     nmake -f ms/ntdll.mak test
    6 W4 E9 E, o! x! @
复制代码

    测试静态库:
/ u8 v! P! j- H9 |  C8 R2 d

  1.     nmake -f ms/nt.mak test
    & O4 ~9 w$ V" C- p; f' \& C
复制代码

    安装动态库:
1 c6 d& u; b% i$ }& g+ P0 ~. N/ V

  1.     nmake -f ms/ntdll.mak install
    # M. F( H& N6 R
复制代码

    安装静态库:
: L$ V. R, r, d- S

  1.     nmake -f ms/nt.mak install. ]/ ^. i/ O' E0 w+ k, K
复制代码

    清除上次动态库的编译,以便重新编译:& K0 T- Z# s  D  D

  1.     nmake -f ms/ntdll.mak clean7 G1 z1 L1 e) [6 p3 z7 ?
复制代码

    清除上次静态库的编译,以便重新编译:9 v' p  u8 A& a% X3 [) @, Z3 g0 E

  1.     nmake -f ms/nt.mak clean
    ) O. k& |+ Q% Z$ w/ z
复制代码

二、使用OpenSSL% ]7 C& Y1 E1 }% Y" ]& f
    在VC中配置使用以上的函数库:
- n" D: K" k* {( e    点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。
* j8 R/ L3 X( t4 F" v& K    在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。9 i* d5 o: ^) l) k- x
    然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。

0 [/ ?* J0 J/ V3 G: p
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-10-2 09:07 , Processed in 0.014876 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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