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

在VC中编译和使用OpenSSL

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

一、编译OpenSSL
6 u0 o) G! \7 P    在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。
7 s2 R1 r$ n( r    下载最新版本的Perl:http://www.activestate.com/,然后安装之。! _; G# t+ O! H* z
    下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。. r) y# c2 w" x% n
    进入openssl源码目录。7 R2 E% V! d  b3 Z5 O

  1.     cd x:/openssl+ f1 k  e. `0 N0 {; L$ m6 e7 ~5 V
复制代码

    以下为参照该目录下的文件INSTALL.W32的执行过程:
9 U% y* U0 |% Y1 S8 |    运行configure:- Q7 Z  |2 o7 t, R7 `

  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
    4 O3 o" X, H$ i% A/ q0 p# O4 K
  2. tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands$ \$ m, {! n% Q/ P: ?8 N+ M
  3. tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands2 r6 O& M# z, V3 e
  4. NMAKE : fatal error U1077: 'ml' : return code '0x1', r/ X' A* f" `9 c0 I
  5. Stop.
复制代码

    ; [+ S! w! r2 I- e5 \9 y
    ; q' X( h% h4 d, a  u' K- y' i3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。


0 C4 }$ ^3 d/ \! C

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

    创建Makefile文件:$ E# T: r/ X  b  c3 X" f( i3 l

  1.     ms/do_ms* r: K+ ?' y3 T! Y$ X- Z' t
复制代码

    编译动态库:# S5 P! R: W' q: |

  1.     nmake -f ms/ntdll.mak
    . \/ l) W  d* J0 ~) ^
复制代码

    编译静态库:
2 M# s* f4 ^' M9 s7 t* x

  1.     nmake -f ms/nt.mak
    4 u' f2 o8 F# T# w( J+ A) Y$ ]/ p
复制代码

    测试动态库:- Q7 s# x3 v- E2 K$ @4 P

  1.     nmake -f ms/ntdll.mak test
    4 @# L' d: D9 l' `" T# j
复制代码

    测试静态库:5 o3 \* ~8 u: ^- C

  1.     nmake -f ms/nt.mak test
    ( I$ }* z0 |6 L0 c
复制代码

    安装动态库:
* z0 K2 z& z3 M( q5 V: i

  1.     nmake -f ms/ntdll.mak install
    8 {: g) E1 M# W
复制代码

    安装静态库:
  M  l& z8 n- N" ~

  1.     nmake -f ms/nt.mak install
      r) d# T0 U- ~  K; Z: E: z  x. {9 i
复制代码

    清除上次动态库的编译,以便重新编译:
) L) w6 f6 l( ?  g2 q6 W; L

  1.     nmake -f ms/ntdll.mak clean0 N3 |& D6 q3 b7 v
复制代码

    清除上次静态库的编译,以便重新编译:8 L8 V  k2 j( A; V2 s# b

  1.     nmake -f ms/nt.mak clean- _8 U0 L' x* Z+ B% P4 W! X$ w
复制代码

二、使用OpenSSL
8 ?8 k( c+ E5 {9 c0 f% u    在VC中配置使用以上的函数库:1 w; a4 a6 k/ a" J) [) F
    点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。* Y# \5 T; `# w
    在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。
" V3 N6 I& Y& I% o: T    然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。

3 Z8 \$ F9 M7 Q) f' L# h3 N
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-10-1 21:55 , Processed in 0.015712 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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