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

在VC中编译和使用OpenSSL

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

一、编译OpenSSL
# D; G4 v$ n- Z# y3 @; j/ ?( U# w* N    在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。  B* H8 Y" x7 X0 k- p  x
    下载最新版本的Perl:http://www.activestate.com/,然后安装之。
3 ?. T* ^# \" A$ v    下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。
6 W- {& W6 ^( g" p" ]    进入openssl源码目录。
2 p: m1 q% A2 `) [7 n, ]9 ?8 R# [

  1.     cd x:/openssl* \7 Q+ o- R9 V" T7 Z& A
复制代码

    以下为参照该目录下的文件INSTALL.W32的执行过程:
' {; u8 C8 M! p+ C) m4 T    运行configure:6 Y  \* D# W1 c9 K

  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.asm4 f% V% a3 \3 \( n
  2. tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands. `" z  j! L; a9 H" {, ]) c
  3. tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands
    ! O) ?7 W) B. `. z& ?7 ^
  4. NMAKE : fatal error U1077: 'ml' : return code '0x1'7 G( s% U' |1 ?4 K
  5. Stop.
复制代码
    # O, B: E% j/ y4 I, a. y) ?: C

    , s4 |1 m/ ]2 Q) W- j! }; x3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。

( v# C/ P9 I6 n1 ~- D4 B: I5 g3 M

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

    创建Makefile文件:. n( _" `0 l) V* s: G5 q$ Q

  1.     ms/do_ms
    ( L! l% N. b  `6 a! J# W
复制代码

    编译动态库:  E4 {1 V) x" t+ F6 |

  1.     nmake -f ms/ntdll.mak* Q8 G. ]2 d" r8 }% I% i
复制代码

    编译静态库:4 E9 `: R3 T/ y; U6 t, Z

  1.     nmake -f ms/nt.mak
    ; ^8 |" Q, H1 ?) w" H3 d
复制代码

    测试动态库:
: ?1 p9 j" Z& E4 k( h( c

  1.     nmake -f ms/ntdll.mak test$ u' E1 E5 f$ O6 k
复制代码

    测试静态库:+ i* ~! T' i+ E

  1.     nmake -f ms/nt.mak test
    , p3 k/ B, k5 t
复制代码

    安装动态库:
' c& e& G8 k% e1 O2 _

  1.     nmake -f ms/ntdll.mak install% R% ~# J- o! W
复制代码

    安装静态库:
% u5 i+ {/ z- B/ v0 y

  1.     nmake -f ms/nt.mak install
    ( V6 C% s7 \0 M
复制代码

    清除上次动态库的编译,以便重新编译:
* v# j/ F8 k& H

  1.     nmake -f ms/ntdll.mak clean
    4 s5 n, q8 U  [+ I) H- u
复制代码

    清除上次静态库的编译,以便重新编译:5 A0 k8 v: ]: X  w$ a

  1.     nmake -f ms/nt.mak clean; V. w4 W6 O9 @7 O
复制代码

二、使用OpenSSL' O( Y* R( @, f- h  J+ y1 [6 f
    在VC中配置使用以上的函数库:3 T" h' G# q$ S8 L. |
    点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。- {- u. D9 x* W# ^# P
    在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。
# Z0 [! q& o: c' O" K( P8 f0 U    然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。


2 k2 p7 J  H9 r. [
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-19 02:45 , Processed in 0.014892 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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