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

在VC中编译和使用OpenSSL

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

一、编译OpenSSL
5 A) {! [& X/ J) `* E1 j0 R    在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。) S9 |6 @" [6 s
    下载最新版本的Perl:http://www.activestate.com/,然后安装之。3 M/ d  x2 j; q5 e
    下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。, Z8 O% s1 q$ N
    进入openssl源码目录。
/ z" z! p, {* ?( L# U- ~4 {

  1.     cd x:/openssl
    8 H6 Z! p" l7 x8 ]
复制代码

    以下为参照该目录下的文件INSTALL.W32的执行过程:5 {( j- Y6 m$ g: K
    运行configure:
5 D9 q; }8 s  t

  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.asm5 Y# h% a  a9 V
  2. tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands
    * F5 `- W1 p5 Y
  3. tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands
    " I/ j! G; \" [, A
  4. NMAKE : fatal error U1077: 'ml' : return code '0x1'
    . v9 S, [! x, X0 P
  5. Stop.
复制代码
    - G- s  }: u' \4 |0 D

    7 N& ]$ V  J& r( r3 }6 l: q3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。

& l6 N  Q* O5 b: c8 f0 a$ }  H3 r

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

    创建Makefile文件:
$ P" o4 c, d& g; s( M7 j

  1.     ms/do_ms5 C! I& j% M# j8 z; Z- e8 L8 Z
复制代码

    编译动态库:; C, Y  v9 u* G$ e9 _: R2 D

  1.     nmake -f ms/ntdll.mak
    - V4 M. X) ?7 d/ s5 K
复制代码

    编译静态库:- l" T3 X4 K, X9 U" Y6 E

  1.     nmake -f ms/nt.mak
    / S$ N+ c- S9 h: d  b( i% u
复制代码

    测试动态库:. c1 B8 k8 s6 p. U

  1.     nmake -f ms/ntdll.mak test
    0 q5 @6 @  r  w0 {% E
复制代码

    测试静态库:# ], y4 l! @6 e$ c* c

  1.     nmake -f ms/nt.mak test
    ' t! m  V, ~6 J0 y: X; z* }
复制代码

    安装动态库:  u# b8 E  M2 y" h& k" V8 T

  1.     nmake -f ms/ntdll.mak install. B+ h# l0 T/ o% s3 |: H* y2 E
复制代码

    安装静态库:* I& ]+ x6 a) k6 m3 q! w

  1.     nmake -f ms/nt.mak install
    & K( S$ a6 [5 q8 i4 U6 T
复制代码

    清除上次动态库的编译,以便重新编译:. I0 Y) ]" R( Q3 G

  1.     nmake -f ms/ntdll.mak clean- Z/ X: o& \: x. U; t+ Q$ P, U6 U
复制代码

    清除上次静态库的编译,以便重新编译:# X" N, t8 `; ?1 B1 a

  1.     nmake -f ms/nt.mak clean& s4 [! O" _8 |/ R
复制代码

二、使用OpenSSL: w& `+ o+ Y) H/ Z) \
    在VC中配置使用以上的函数库:  ?% M( p0 a" r$ p* f
    点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。2 Z$ h* s! P2 T7 [$ y
    在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。
6 m+ [9 {: C) B% E% w$ s% L: A    然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。

, H. _& t* U  g4 R
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-2 07:07 , Processed in 0.026125 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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