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++例程编译成功。










  • 相关阅读:
    linux
    ansible
    语法糖
    jupyter login
    hadoop patch
    ganglia
    unixbench安装使用
    linux使用FIO测试磁盘的iops
    cpu事实负载使用top命令
    phoronix-test-suite测试云服务器
  • 原文地址:https://www.cnblogs.com/a_bu/p/4438893.html
Copyright © 2011-2022 走看看