zoukankan      html  css  js  c++  java
  • websocket++编译过程

    websocket++ 是一个开源 websocket 库,使用websocket++ 能够开发基于websocket 服务。
    前一段时间成功编译 websocket++ ,分享一下,编译websocket++ 过程如下:
    1.安装Python , 本例安装 Python27
    2.安装scons , 该程序负责构建跨平台编绎脚本。需要Python支持.
    3.配置Python  , scons , 环境变量:
        C:Python27  //Python27 环境变量
        C:Python27Scripts  //scons 环境变量

    4.编译openssl //boost依赖项
    5.编译boost //websocket 中使用boost库
    6.编译websocket++

    编绎过程为 openssl -> boost ->websocket , 最终生成32位运行环境程序

    其中openssl 版本:openssl-1.0.2a , boost:boost_1_51_0 , websocket++ (0.3.0-alpha4)


    openssl 编译需要perl支持,安装perl 后配置环境变量,本例为:C:Perl64in 
    在openssl 根目录 INSTALL.W32 介绍了编绎过程:
    1.打开vs2010 tool cmd x86环境  // vcvarsall x86
    2.cd H:openssl-1.0.2aopenssl-1.0.2a
    3.perl Configure VC-WIN32 no-asm   //没装汇编环境,因此添加 no-asm 否则报错
    4.msdo_ms
    5.nmake -f ms tdll.mak

    boost 编绎过程
    1.解压boost_1_51_0 , 打开vs2010 tool cmd x86环境 , 切入到解压目录
    2.运行bootstrap.bat , 生成 bjam
    3.cmd 环境,输入 bjam install architecture=x86 address-model=32 --toolset=msvc-10.0 --without-python --build-type=complete --prefix="H:oost_1_51_0oost_1_51_0invc10_prefix_dll_arcx86_addr32" link=static runtime-link=shared threading=multi debug release
    4.配置环境变量:
        BOOST_INCLUDES = H:oost_1_51_0oost_1_51_0invc10_prefix_dll_arcx86_addr32includeoost-1_51
        BOOST_LIBS = H:oost_1_51_0oost_1_51_0invc10_prefix_dll_arcx86_addr32lib

    由于websocket++ 使用 boost 库, 本例程,将openssl 的 include lib 并入 boost 库路径中
    1.拷贝 openssl-1.0.2aopenssl-1.0.2aincludeopenssl 到 boost_1_51_0oost_1_51_0invc10_prefix_dll_arcx86_addr32includeoost-1_51
    2.拷贝 openssl 编绎输入结果:out32dll 目录(libeay32.lib , ssleay32.lib)内容复制到 H:oost_1_51_0oost_1_51_0invc10_prefix_dll_arcx86_addr32lib

    websocket++ 例程编绎过程(0.3.0-alpha4)
    1.解压websocket++ , 打开cmd , 切入到解压目录
    2.修改SConstruct文件, 因为本人是win7 64位系统,默认编译结果是64位。本例目标编译x86环境,需要对 SConstruct 文件修改:
        a.如将 :env['LINKFLAGS'] = '/INCREMENTAL:NO /MANIFEST /NOLOGO /OPT:REF /OPT:ICF /MACHINE:X64' 修改为:env['LINKFLAGS'] = '/INCREMENTAL:NO /MANIFEST /NOLOGO /OPT:REF /OPT:ICF /MACHINE:X86'
        b.行首将 env = Environment(ENV = os.environ)  修改为: env = Environment(ENV = os.environ , TARGET_ARCH = 'x86')


        a 设置生成目标程序运行环境为 x86机器。b TARGET_ARCH = 'x86' 设置编译环境为x86 , 如果编译64位,分别修改为:/MACHINE:X64  TARGET_ARCH = 'amd64'

    3.修改examples/utility_client/utility_client.cpp , 其中引用了chrono 库,该库为cpp11标准库,vs2010不支持,去掉代码中包含chrono 引用部份。
    4.在utility_client.cpp中添加对openssl部份引用:
        #pragma comment(lib, "libeay32.lib")
        #pragma comment(lib, "ssleay32.lib")


        之前,我们已将openssl编译结果拷贝到boost lib 库中,因此,此处可直接引用。
        关于拷贝openssl库到boost 目录的问题,也可不用拷贝,将openssl 库放入 C:Program Files (x86)Microsoft Visual Studio 10.0VC 目录 lib , include 目录,效果一样。


    至此,所有准备工作完成了,在cmd环境,切入0.3.0-alpha4解压目录, 运行 scons ,最终显示 scons: done building targets. 表明websocket++例程编译成功。










  • 相关阅读:
    zoj 1239 Hanoi Tower Troubles Again!
    zoj 1221 Risk
    uva 10192 Vacation
    uva 10066 The Twin Towers
    uva 531 Compromise
    uva 103 Stacking Boxes
    稳定婚姻模型
    Ants UVA
    Golden Tiger Claw UVA
    关于upper、lower bound 的探讨
  • 原文地址:https://www.cnblogs.com/a_bu/p/4438893.html
Copyright © 2011-2022 走看看