VC 6.0中编译和使用OpenSSL的过程

一、编译OpenSSL

    在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。
   
    下载最新版本的Perl:http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.8.822-MSWin32-x86-280952.zip。然后安装之。

    下载最新版本的OpenSSL:http://www.openssl.org/source/openssl-0.9.8g.tar.gz
   
    然后将源码释放的c:/openssl-0.9.8g目录中。
   
    进入openssl源码目录。
    cd c:/openssl-0.9.8.g
   
    以下为参照该目录下的文件INSTALL.W32的执行过程:

    运行configure:
    perl Configure VC-WIN32 --prefix=c:/openssl

    创建Makefile文件:
    ms/do_ms
   
    编译动态库:
    nmake -f ms\ntdll.mak
    编译静态库:
    nmake -f ms\nt.mak

    测试动态库:
    nmake -f ms\ntdll.mak test
    测试静态库:
    nmake -f ms\nt.mak test

    安装动态库:
    nmake -f ms\ntdll.mak install
    安装静态库:
    nmake -f ms\nt.mak install

    清除上次动态库的编译,以便重新编译:
    nmake -f ms\ntdll.mak clean
    清除上次静态库的编译,以便重新编译:
    nmake -f ms\nt.mak clean

二、使用OpenSSL

    在VC中配置使用以上的函数库:
    点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。
    在"Show directories for:"的"Include files"选项中新增目录"C:/openssl/include";"Library files"选择中新增目录"C:/openssl/lib"。
    然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。

三、问题

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

    调整OpenSSL的静态函数库使用的库函数版本即可,调整过程如下:
   
    编辑文件 ms/nt.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即可。

四、附录:在VC中对C/C++ 运行时库不同版本编译指令说明
    《在VC中对C/C++ 运行时库不同版本编译指令说明》(http://blog.yesky.com/271/dgkang/1737771.shtml)一文中详细介绍了连接不同版本库的编译指令如下:
    C Runtime Library:
        /MD        MSVCRT.LIB     多线程DLL的Release版本
        /MDd       MSVCRTD.LIB    多线程DLL的Debug版本
        /MT        LIBCMT.LIB     多线程静态链接的Release版本
        /MTd       LIBCMTD.LIB    多线程静态链接的Debug版本
        /clr       MSVCMRT.LIB    托管代码和非托管代码混合
        /clr:pure  MSVCURT.LIB    纯托管代码
    C++ Standard Library:
        /MD       MSVCPRT.LIB     多线程DLL的Release版本
        /MDd      MSVCPRTD.LIB    多线程DLL的Debug版本
        /MT       LIBCPMT.LIB     多线程静态链接的Release版本
        /MTd      LIBCPMTD.LIB    多线程静态链接的Debug版本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 编译 OpenSSL 过程: 1. 下载 OpenSSL 的源代码包,解压缩到某个目录下。 2. 执行 ./config 命令进行配置,可以指定一些选项,例如编译平台、安装位置等。如果没有特别需求,可以直接执行 ./config 默认选择。 3. 执行 make 命令进行编译,这个过程可能会比较漫长,需要耐心等待。 4. 编译完成后,执行 make install 命令进行安装,这会把编译好的库文件和头文件安装到指定的位置。 5. 验证安装是否成功,可以执行 openssl version 命令,如果能够输出版本号,则表示安装成功。 需要注意的是,在编译 OpenSSL过程,可能会涉及到一些依赖库的安装,例如 zlib、libssl 等,需要提前安装好。同时,为了保证安全性,建议在编译 OpenSSL 的时候开启 FIPS 模式,这样可以增强加密算法的安全性。 ### 回答2: 编译SRS(Simple-RTMP-Server)是一个功能强大的开源媒体服务器,用于流媒体的处理和分发。下面是编译SRS时编译OpenSSL过程记录。 首先,确保已经安装了必要的软件和依赖项。使用`apt-get`或`yum`安装以下软件包: ``` sudo apt-get install build-essential sudo apt-get install libssl-dev ``` 接下来,下载OpenSSL源代码并解压: ``` wget https://www.openssl.org/source/openssl-1.1.1.tar.gz tar -xzvf openssl-1.1.1.tar.gz cd openssl-1.1.1 ``` 进入OpenSSL源代码目录后,首先运行配置命令: ``` ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared ``` 这里的`prefix`参数指定了OpenSSL的安装路径,`openssldir`参数指定了配置文件的位置。`shared`选项用于编译共享库。 运行配置命令后,运行以下命令进行编译: ``` make sudo make install ``` 这将开始编译OpenSSL并将其安装到指定的安装路径。 编译完成后,可以通过运行以下命令检查OpenSSL的安装情况: ``` /usr/local/openssl/bin/openssl version -a ``` 这将显示已安装的OpenSSL版本和其他详细信息。 最后,在编译SRS时,使用`--with-ssl`选项指定编译使用OpenSSL库的位置。示例命令如下: ``` ./configure --with-ssl=/usr/local/openssl make sudo make install ``` 这样,就完成了在编译SRS时编译OpenSSL过程。通过这个过程,可以确保SRS在运行时能够正确地使用和依赖于OpenSSL库。 ### 回答3: 编译SRS (Simple RTMP Server) 是一种Linux操作系统的编译过程,而编译OpenSSL是其的一部分。 首先,我们需要从官方网站上下载SRS的源代码。然后,解压缩下载的文件,并进入解压后的目录。 在编译之前,我们需要确保Linux系统已经安装了GCC、make、autoconf、g++以及其他必要的依赖库。这些依赖项可以通过包管理器进行安装。 接下来,我们需要在终端运行"./configure"命令,该命令将检查系统环境并生成编译配置文件。 一旦配置完成,我们可以运行"make"命令来进行编译。这个过程可能需要一些时间,具体取决于系统配置和源代码的大小。 一旦编译完成,我们可以运行"SRS"命令来启动服务器。在启动服务器之前,我们可以根据需要编辑配置文件,以便自定义服务器的行为。 当涉及到编译OpenSSL时,我们需要在SRS的源代码目录下进一步操作。 首先,我们需要下载OpenSSL的源代码。然后,解压缩下载的文件,并进入解压后的目录。 在终端运行"./config"命令来为OpenSSL生成编译配置文件。我们可以通过添加参数来自定义配置选项,以满足特定需求。 接下来,我们可以运行"make"命令来进行编译。这个过程可能需要一定的时间,具体取决于系统配置和源代码的大小。 一旦编译完成,我们可以运行"make install"命令来安装编译后的OpenSSL库文件。 现在,我们可以回到SRS的源代码目录,然后重新运行"./configure"命令,确保编译过程能够正确地找到OpenSSL库。 最后,我们可以运行"make"命令来重新编译SRS,以确保它能够正确地链接和使用OpenSSL库。 通过以上过程,我们就成功完成了SRS和OpenSSL编译过程。这将使我们能够在Linux系统上使用SRS服务器,并为其配置和定制安全性选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值