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

在VC中编译和使用OpenSSL

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

一、编译OpenSSL5 \: ~$ o7 \' O3 r" ?' J
    在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。
9 H1 |! G' |2 z" i  d    下载最新版本的Perl:http://www.activestate.com/,然后安装之。  d: {( J2 Q. s7 k  y& b" m- S
    下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。( y# L2 R) G9 |' w5 L3 Z6 f5 P3 c
    进入openssl源码目录。
: E8 Z$ `7 r2 f4 l$ a+ M5 S

  1.     cd x:/openssl$ i# q% l$ v# ~2 Z
复制代码

    以下为参照该目录下的文件INSTALL.W32的执行过程:
( w/ D' b6 o( S4 I    运行configure:
/ X3 s% k6 H& g

  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
    $ L4 @0 h4 }3 k" G' ~: P5 R
  2. tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands6 Z6 l+ V. p0 R
  3. tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands
    + B; G' u7 y* w* e
  4. NMAKE : fatal error U1077: 'ml' : return code '0x1'
    $ M/ C7 p+ ~0 \" F3 o$ r
  5. Stop.
复制代码

    4 }- ?! n2 ~0 [" x7 T7 x
    ( {! W) z# V4 j5 Q) H8 P3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。

0 X7 u& w; S! r) p3 v+ f

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

    创建Makefile文件:) V: p. h5 g5 k& O1 ~' L: Y/ @* I

  1.     ms/do_ms
    8 F! H/ Z! Q! d& w3 H; r
复制代码

    编译动态库:
/ z: e1 i) Q& w2 }; }2 I6 _

  1.     nmake -f ms/ntdll.mak% N- N& H' |% s" `
复制代码

    编译静态库:
5 D( L" F0 R" P+ r

  1.     nmake -f ms/nt.mak
    ' a7 M& `" V5 W0 U
复制代码

    测试动态库:/ O; `( S- e8 c; q; a& Y2 E

  1.     nmake -f ms/ntdll.mak test+ E: d2 o# s7 j+ V2 G1 w, w
复制代码

    测试静态库:/ Y4 w0 F$ p) M) N8 b! b

  1.     nmake -f ms/nt.mak test* v/ ?5 `: _9 [9 `. t# ?7 e
复制代码

    安装动态库:
: ?6 r( [0 ^0 J& A3 N3 ?

  1.     nmake -f ms/ntdll.mak install. ^& {  K, t" e. o  y- E
复制代码

    安装静态库:
$ @% _! v& m' F0 L5 {

  1.     nmake -f ms/nt.mak install) V$ c; b# S" A
复制代码

    清除上次动态库的编译,以便重新编译:/ o; J( `; Z: S

  1.     nmake -f ms/ntdll.mak clean
      s, E& C2 p% b' |0 \
复制代码

    清除上次静态库的编译,以便重新编译:9 c% p! T( T; j, }# a! ]% m

  1.     nmake -f ms/nt.mak clean
    # I( k% H4 J1 l4 f0 ]/ M# r' P
复制代码

二、使用OpenSSL% I% E$ y# o% b& c
    在VC中配置使用以上的函数库:
+ _- q; y* k  S    点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。) F% `5 H& \- `1 J5 o+ }6 X
    在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。
" y  t' i$ `( p1 a    然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。

* n& b! p9 ~3 p  T& y7 c5 k0 j2 }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-10-2 05:02 , Processed in 0.016361 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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