zoukankan      html  css  js  c++  java
  • Windows 下openssl安装与配置

    编译thirift失败

    网上方法很多,大部分是针对32位机的,自己的电脑因为是win7,64位,摸索了很久才安装成功.

     

    环境

    WIN7, 64位, vs2005

     

    下载ActivePerl

    配置过程中需要生成一些mak文件,这些生成代码用perl脚本生成,所以要安装一个ActivePerl.

     

    网址: http://www.activestate.com/activeperl/

     

    我下载了两个版本:

    1 ActivePerl-5.16.2.1602-MSWin32-x64-296513.msi  
    2 ActivePerl-5.16.2.1602-MSWin32-x86-296513.msi  

    装的是第一个版本,64位的。

     

    下载openssl

    网址 http://www.openssl.org/

    我用的是openssl-0.9.8g版本,解压到c盘根目录。

     

    安装步骤:

    (可以参照openssl目录下的install.win32)

    1打开命令行

    进入openssl源码目录。
    cd c:/openssl-0.9.8.g
    执行perl Configure VC-WIN32

     

    2在c:/openssl-0.9.8.g目录运行msdo_ms

    另外两种方式如果使用也必须保证本机有编译器才能使用。

    :msdo_masm(默认vc自带的编译器;也也以自己下载安装)

    :msdo_nasm(需要自己下载)

     

    3 DOS窗口转到C:Program FilesMicrosoft Visual Studio VC98in目录(就是VC或VS对应的目录,你电脑可能有差异)

    执行vcvars32.bat以配置环境变量.成功后显示如下:

     

     

    4、跳到openssl目录下,编译动态链接库

    cd c:/openssl-0.9.8.g
    执行 >nmake -f ms tdll.mak

     

    如果编译成功,输出在out32dll目录下:包括可执行文件、两个dll和两个lib文件: libeay32.dll, libeay32.lib, ssleay32.dll,ssleay32.lib

     

    如果遇到"ml不是内部或外部命令"这样的错误,找到你电脑里的ml.exe文件拷贝到当前目录重新执行即可。

     

    这里要特别强调一下,这种方法生成的是动库链接库, 也就是我们的应用工程如果要使用openssl, 编译时要指定

    lib文件,程序发布时要用到相应的dll. 我遇到过一种情况是, 在win7下发布的使用openssl的程序无法运行,弹出

    “运行时初始化相关的错误”, 但是在xp下编译,发布,在其它win7和winXP上都能运行. 估计是win7下没配置好,导致只能本机编译,运行,无法发布.

     

    如果要把openssl编译成静态的库,只要把上面的ntdll.mak换成nt.mak就可以了,我试着用了一个静态的库,发现要解决很多编译时的兼容,冲突问题,建议不要使用静态方法.

     

    下面来测试一下。

    建立工程

    打开vs2005,

    在additionalinclude directories加上

    "C:openssl-0.9.8ginclude"

    这个目录.

     

    在additionallibrary directories加上

    "C:openssl-0.9.8gout32dll"

    这个目录

     

    代码类似下面这样:

     1 #include<stdio.h>  
     2 #include<stdlib.h>  
     3 #include<string.h>  
     4 #include<time.h>  
     5 #include<openssl/bn.h>  
     6 #include<openssl/ec.h>  
     7 #include<openssl/rand.h>  
     8 #include<openssl/err.h>  
     9 #include<openssl/ecdsa.h>  
    10 #include<openssl/ecdh.h>  
    11 #include"sm2.h"  
    12    
    13 #pragmacomment(lib,"libeay32.lib")  

    编译不会有问题.同样在VC6下,把上面两个目录包含进来,编译也通过.

  • 相关阅读:
    操作系统实验报告-信号量的实现和应用
    操作系统实验报告-系统调用
    操作系统实验报告-熟悉实验环境
    Linux下JDK环境变量配置
    BATMAN.adv系列07 过度泛洪的遏制策略与网络重组
    BATMAN.adv系列06 协议栈结构
    BATMAN.adv系列05 数据结构分析
    BATMAN.adv系列04 TVLV包
    BATMAN.adv系列01:BATMAN.adv IV 概述
    Kudu、Hudi和Delta Lake的比较
  • 原文地址:https://www.cnblogs.com/lpxblog/p/5382397.html
Copyright © 2011-2022 走看看