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

在VC中编译和使用OpenSSL

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

一、编译OpenSSL5 p9 a; _" ~+ d/ N9 g+ n) T5 A
    在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。
* x+ R0 ]' H, M- ^    下载最新版本的Perl:http://www.activestate.com/,然后安装之。7 E& }3 g. J5 i
    下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。
% E, r$ |1 T( k/ Q6 l4 A    进入openssl源码目录。
3 }" q" T. o6 S( [/ L" o6 K9 y/ |" ^

  1.     cd x:/openssl
    0 m, q7 L0 C8 d" I- \- z
复制代码

    以下为参照该目录下的文件INSTALL.W32的执行过程:
2 Q5 V, f- L4 O# W0 N7 T; u    运行configure:) ?. x. u! [" y) P4 L2 x7 \0 `

  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# z& }5 f. m/ p
  2. tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands
    , A! p5 H" ^/ h3 W! X$ x
  3. tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands% F9 I, I; x, k" X: q! ~0 m
  4. NMAKE : fatal error U1077: 'ml' : return code '0x1'
    / x. N, c6 J2 o  q
  5. Stop.
复制代码

    9 A# b* {. T6 m
    % s: d0 X0 S6 q3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。

- X6 ?3 e$ A2 ]2 B% L/ A8 P7 u9 i

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

    创建Makefile文件:
4 V* v+ l" f5 a9 j

  1.     ms/do_ms
    5 ^0 M' `) k. p# t
复制代码

    编译动态库:# k7 F9 w8 G! c3 s

  1.     nmake -f ms/ntdll.mak
    ( y$ [8 J$ l& u
复制代码

    编译静态库:+ S; _. R3 u0 X6 L& O

  1.     nmake -f ms/nt.mak
    $ M  Z6 w# i8 B3 u# N
复制代码

    测试动态库:1 }6 M1 n5 W: D/ f  p5 i" D+ `

  1.     nmake -f ms/ntdll.mak test, d4 k$ X; ]1 r# h7 L- T9 E; @
复制代码

    测试静态库:. I2 r. x1 b! t$ a& e

  1.     nmake -f ms/nt.mak test0 Q" n# |, J3 Q1 @3 F
复制代码

    安装动态库:
* |! {% o  f+ T3 H

  1.     nmake -f ms/ntdll.mak install7 B  o7 g5 N  a/ l4 ], c
复制代码

    安装静态库:7 s5 A1 z6 ]2 H/ C

  1.     nmake -f ms/nt.mak install: B. _9 A) f2 ^: y" i# \( F
复制代码

    清除上次动态库的编译,以便重新编译:2 @* c0 ?  W  w. e6 y' [. E/ @* P2 s

  1.     nmake -f ms/ntdll.mak clean. E2 O5 b8 t' z  W: [: O6 o
复制代码

    清除上次静态库的编译,以便重新编译:% i" E" T' }* ~  Z1 T  A( N

  1.     nmake -f ms/nt.mak clean9 b; y! l: |. {7 k1 n1 j
复制代码

二、使用OpenSSL
- ^) I1 e. }& e4 b1 F, w1 l6 ]" h    在VC中配置使用以上的函数库:
" n1 w7 ~: f3 ]- C1 x/ Y    点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。
4 k% c! u8 e! T# G" s; f0 V0 s6 a3 ?    在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。7 ~& i+ @# i+ p: y* y- ]: L# Q+ E
    然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。

3 v0 n- j; A7 l' N) K$ p$ d
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-29 17:45 , Processed in 0.021624 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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