websocket++编译过程

websocket++ 是一个开源 websocket 库,使用websocket++ 能够开发基于websocket 服务。
前一段时间成功编译 websocket++ ,分享一下,编译websocket++ 过程如下:
1.安装Python , 本例安装 Python27
2.安装scons , 该程序负责构建跨平台编绎脚本。需要Python支持.
3.配置Python  , scons , 环境变量:
    C:\Python27  //Python27 环境变量
    C:\Python27\Scripts  //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:\Perl64\bin 
在openssl 根目录 INSTALL.W32 介绍了编绎过程:
1.打开vs2010 tool cmd x86环境  // vcvarsall x86
2.cd H:\openssl-1.0.2a\openssl-1.0.2a
3.perl Configure VC-WIN32 no-asm   //没装汇编环境,因此添加 no-asm 否则报错
4.ms\do_ms
5.nmake -f ms\ntdll.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:\boost_1_51_0\boost_1_51_0\bin\vc10_prefix_dll_arcx86_addr32" link=static runtime-link=shared threading=multi debug release
4.配置环境变量:
    BOOST_INCLUDES = H:\boost_1_51_0\boost_1_51_0\bin\vc10_prefix_dll_arcx86_addr32\include\boost-1_51
    BOOST_LIBS = H:\boost_1_51_0\boost_1_51_0\bin\vc10_prefix_dll_arcx86_addr32\lib

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

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.0\VC 目录 lib , include 目录,效果一样。

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

时间: 2024-12-15 17:14:17

websocket++编译过程的相关文章

2.4、uboot配置和编译过程详解

2.4.1.uboot主Makefile分析1 2.4.1.1.uboot version分析 (1)uboot版本号分为3个级别: VERSION:主版本号 PATCHLEVEL:次版本号 SUBLEVEL:再次版本号 EXTRAVERSION:另外附加的版本信息 这四个用.隔开共同构成了最终的版本号. (2)Makefile中版本号最终生成了一个变量U_BOOT_VERSION,这个变量记录了Makefile中配置的版本号 (3)include/version_autogenerated.h

FFmpeg在Linux下安装编译过程

转载请把头部出处链接和尾部二维码一起转载,本文出自:http://blog.csdn.net/hejjunlin/article/details/52402759 今天介绍下FFmpeg在Linux下安装编译过程,用的是CentOS, 总体过程比较顺利,就是在ffmpeg等的时间稍长点.没什么技术难点.仅当记录. 关于FFmpeg FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件).它提供了录制.转换以及流化音视频的完整解决方案.它包

编译过程中,termcap.h 文件找不到路径 licli.a终于生成

编译过程中,termcap.h      文件找不到路径 查看是linux  源码下找不到termcap.h文件 安装了所有关于*cap*的源码包也不起作用 今天终于解决了这个问题,搜termcap.h  发现一篇文章,如下 ----------------------------------------------------------------------------------------- 安装minicom2.3出现termcap.h错误解决方法 2010-05-06 17:12:

GCC与编译过程

GCC与编译过程   GCC(GNU Compiler Colletion),GUN编译器套装,是一套由GNU开发的编程语言编译器.Linux系统下的GCC编译器实际上是调用其他不同的工具来完成预处理.编译.汇编和链接工作. 一.编译过程 在计算机的眼里,只有1和0.不幸的是,我们用C语言写出来的代码,计算机无法直接看明白.所以一个程序如果需要被计算机执行,那么就必须翻译成能被计算机读懂并执行的1和0.实现这一结果的过程,我们称之为编译. 编译包括以下步骤:预处理.编译.汇编和链接.具体过程如下

Hive SQL的编译过程

Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用.美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析.Hive的稳定性和性能对我们的数据分析非常关键. 在几次升级Hive的过程中,我们遇到了一些大大小小的问题.通过向社区的咨询和自己的努力,在解决这些问题的同时我们对Hive将SQL编译为MapReduce的过程有了比较深入的理解.对这一过程的理解不仅帮助我们解决了一些Hive的bug,也有利于我们优化Hive SQL

C程序编译过程浅析【转】

转自:http://blog.csdn.net/koudaidai/article/details/8092647 前几天看了<程序员的自我修养——链接.装载与库>中的第二章“编译和链接”,主要根据其中的内容简单总结一下C程序编译的过程吧. 我现在一般都是用gcc,所以自然以GCC编译hellworld为例,简单总结如下. hello.c源代码如下: ?[Copy to clipboard] C 1 2 3 4 5 6 [c] view plaincopy <span style=&qu

Windows下Caffe在GPU编译过程

Windows下Caffe在GPU编译过程 GeForce8800 GTS512: cc=1.1 CUDA6.5 问题一: src/caffe/layers/conv_layer.cu(20): error : too few arguments in function call Error in in conv_layer.cu :forward_gpu_gemm needs the argument skip_im2col #1962 解决: https://github.com/BVLC/

【转】 Apk文件及其编译过程

Apk文件概述 Android系统中的应用程序安装包都是以apk为后缀名,其实apk是Android Package的缩写,即android安装包. 注:apk包文件其实就是标准的zip文件,可以直接用解压缩软件解开.Apk包中的内容 解压缩一个apk文件后,目录结构一般如下: *.apk ├-res │ ├+layout │ └+drawable ├-META-INF │ ├-MANIFEST.MF │ ├-CERT.SF │ └-CERT.RSA ├-resources.arsc ├-cla

C语言的编译过程、安装gcc编译器以及设置环境变量

以我对C语言编译过程的了解,我用了一点时间画了一个图,提供给大家参考一下,希望有些能对您的问题提上帮助. 前几天刚初步学习了C语言的编译过程,感触挺深的.在C语言中头文件其实起了一个很大的作用. 1.头文件可以不需要编译 2.可以查看具体的声明 3.头文件加上实现文件的o文件提交给使用者即可 ,不需要知道源代码 4..o文件预先编译,所以整个项目编译时,会大大提高编译的时间 . 5.当一个文件(A.c文件)依赖于头文件(b.h)时 ,如果b.c编译之后形成的b.o文件重新编译后,a.o的文件不需