zoukankan      html  css  js  c++  java
  • Windows下编译OpenSSL库

    一:编译工具

      1、安装汇编工具nasm。从http://www.nasm.us/pub/nasm/releasebuilds/2.06/win32/nasm-2.06-installer.exe 下载并安装。
      2、安装脚本语言ActivePerl。从http://downloads.activestate.com/ActivePerl/Windows/5.10/ActivePerl-5.10.0.1005-MSWin32-x86-290470.msi 下载,然后安装(安装过程中选择默认选项即可)。
      3、使用VS2003(05,008,10都可)下的Visual Studio 2003Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)
     
    二:编译

    OpenSSL库网上只有源代码,我们首先必须编译。从http://www.openssl.org/source/openssl-1.0.1e..tar.gz 下 载源代码包,然后解压到目录C:/openssl-1.0.1e下(最终存在目录C:/openssl-1.0.1e/apps即表示正确)。进入 Visual Studio 2008的命令提示符(开始-->所有程序-->Microsoft Visual Studio 2008-->Visual Studio Tools-->Visual Studio 2008 Command Prompt),依次输入如下命令:

    1. 创建库目录

    mkdir c:openssl_lib 
     
    2. 进入openssl源码目录
    cd C:openssl-1.0.1e
     
    以下为参照该目录下的文件INSTALL.W32的执行过程:
    3.运行configure:
            perl Configure VC-WIN32 --prefix=c:/openssl_lib
    ---输出如下的信息:
    ……
    RC4_CHUNK is undefined
     
    Configured for VC-WIN32.
    4. 创建Makefile文件:
        msdo_ms.bat
       
    5. 编译动态库:
        nmake -f ms tdll.mak
    6.  编译静态库:
        nmake -f ms t.mak
       
     7.  测试动态库:
        nmake -f ms tdll.mak test
    8. 测试静态库:
        nmake -f ms t.mak test
     
    9. 安装动态库:
        nmake -f ms tdll.mak install
    10. 安装静态库:
        nmake -f ms t.mak install
     
    11. 清除上次动态库的编译,以便重新编译:
        nmake -f ms tdll.mak clean
    12.  清除上次静态库的编译,以便重新编译:
        nmake -f ms t.mak clean
     
    ---现在应该在c:/openssl_lib下安装了openssl库文件和头文件了。
    ---如果编译出错,那么也可以查看文件C:/openssl-1.0.1e/INSTALL.W32,里面列举了一些错误处理方法。
     

    三、问题

        我在链接OpenSSL的静态函数库时遇到类似以下的问题:
        Linking...
        msvcrt.lib(MSVCRT.dll) : error LNK2005: _strchr already defined in libcmtd.lib(strchr.obj)
        ...
       
        这是由于OpenSSL的静态函数库使用的是了VC的多线程DLL的Release版本,而我的程序使用了多线程静态链接的Release版本。

        调整OpenSSL的静态函数库使用的库函数版本即可,调整过程如下:
       
        编辑文件 ms t.mak,将该文件第19行
        "CFLAG= /MD /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -D_CRT_SECURE_NO_DEPRECATE -

    D_CRT_NONSTDC_NO_DEPRECATE /Fdout32 -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC2 -DOPENSSL_NO_TLSEXT -DOPENSSL_NO_KRB5 -

    DOPENSSL_NO_DYNAMIC_ENGINE"
        中的"/MD"修改为"/MT"。然后重新编译安装OpenSSL即可。

     
  • 相关阅读:
    webpack—从零开始配置
    多媒体标签 API(video、audio)
    node 爬虫
    node 操作数据库
    es6+
    UI 组件库 引入使用的问题
    单页应用存在 的问题
    ajax 封装(集中 认证、错误、请求loading处理)
    moment.js 时间库
    文件上传大小被限制的解决方案。
  • 原文地址:https://www.cnblogs.com/jdfemqi/p/3365232.html
Copyright © 2011-2022 走看看