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++例程編譯成功。