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

在VC中编译和使用OpenSSL

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

一、编译OpenSSL; T1 M( w; T( A) V, N0 z& b
    在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。3 q+ V$ Q1 w( [
    下载最新版本的Perl:http://www.activestate.com/,然后安装之。9 Q: r, N, a& F" V' Q; m7 m' z; i
    下载最新版本的OpenSSL:http://www.openssl.org/,然后将源码释放的x:/openssl目录中。* e5 R4 w, k$ k1 \+ M6 j
    进入openssl源码目录。+ q4 z( S0 c* h9 f( h- E" y6 w

  1.     cd x:/openssl
    2 q9 x. O9 u9 g6 C
复制代码

    以下为参照该目录下的文件INSTALL.W32的执行过程:4 b! `, M  P5 _. }1 \
    运行configure:& ?( \' C8 e2 s, r+ B! O% Q

  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' T0 Z! C/ p0 a2 L4 l
  2. tmp32\sha1-586.asm(1427) : error A2070: invalid instruction operands" y+ X: J; d; P/ ]; w! B
  3. tmp32\sha1-586.asm(1571) : error A2070: invalid instruction operands
    ( N  q6 j8 s* {& J1 z0 H
  4. NMAKE : fatal error U1077: 'ml' : return code '0x1'
    8 Y" O+ n, L. o) R
  5. Stop.
复制代码

    3 Z  l, ~% |! i2 b
    , N5 r# J- P! \0 O3、设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。

# m4 t7 n# H; a3 y1 Q3 r0 X& B: }

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

    创建Makefile文件:
" P: d) ?$ A$ A

  1.     ms/do_ms3 ~8 U; Q- V5 [0 B' U' Z& |# H* w7 h
复制代码

    编译动态库:5 s7 a/ D: X) X# [

  1.     nmake -f ms/ntdll.mak
    7 ?; E3 L& ?% u
复制代码

    编译静态库:
- a" m$ t* G& P* V6 u9 G

  1.     nmake -f ms/nt.mak
    0 }$ c3 C4 F3 o* v
复制代码

    测试动态库:
  O; w& f  R0 i" c$ [# z

  1.     nmake -f ms/ntdll.mak test
    , a: g1 |2 T) I2 z; `
复制代码

    测试静态库:
/ }* Y. C  N7 w+ ]- S: a

  1.     nmake -f ms/nt.mak test1 y, }& v5 _( A& O" t1 ]5 e
复制代码

    安装动态库:* z! ~, @: g( |- V2 \

  1.     nmake -f ms/ntdll.mak install
    " u' [, Q% N3 a- R- W9 ~" s
复制代码

    安装静态库:
  e. u# I* D; I3 z5 V( {4 [

  1.     nmake -f ms/nt.mak install, G6 c3 J) a/ Z( v( n
复制代码

    清除上次动态库的编译,以便重新编译:& u! D3 z$ f# E  M

  1.     nmake -f ms/ntdll.mak clean0 U4 h: g) h* M/ V) [0 x
复制代码

    清除上次静态库的编译,以便重新编译:3 c( w( w) Z' [9 X+ y/ U  G4 O5 C

  1.     nmake -f ms/nt.mak clean, r& w8 H( D' J& ~: p* ]1 D9 \
复制代码

二、使用OpenSSL; j+ q  G% `' L
    在VC中配置使用以上的函数库:
7 l- S$ D! l* _3 @% d8 N    点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。) s" F* i8 Y+ E' R2 s$ A
    在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。
8 v" b8 S3 s% J0 c5 Q& {0 S% v    然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。

$ S9 F$ r, }( r) D! ]) w; W$ I! P
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-13 19:02 , Processed in 0.017356 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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