arm-none-linux-gnueabi-g++4.6.3.exe。
1.编译boost库:
由于websocket++本身是依赖于boost库的,所以需要先在windows上安装boost库头文件,而且还主要依赖其中的libboost_system库(boost中有部分模块是需要编译生成库之后才能用来给其它程序链接的,而libboost_system就是需要编译的库之一),所以首先要先编译boost,只需要编译出libboost_system库就行,暂不必全部编译,太浪费时间。但由于目标平台是linux,所以libboost_system库自然是需要linux平台上的so库,不会是windows平台上的lib和dll。
开始本想按http://blog.csdn.net/jwybobo2007/article/details/7242307博主方法直接在windows平台上用arm-none-linux-gnueabi-g++编译boost,按要求修改了project-config.jam文件中“using gcc : arm : arm-none-linux-gnueabi-gcc ; ”,但编译时却总报“unrecognized command line option '-mthreads'”,无奈,知识有限,不知怎么解决,所以放弃了,转向linux平台。
于是得使用虚拟机上的linux系统ubantu来编译,开始是用的普通的g++4.8编译来编译boost的system库,编译完libboost_system.so.1.55.0后拿到windows平台上链接,报不兼容的库文件,才想起这个库是intel32程序库,不是目标arm库,于是又去linux系统安装交叉编译器arm-none-linux-gnueabi-g++4.6.3.bin,用它来再次编译出arm上的libboost_system.so.1.55.0库,这次回到windows平台上使用才链接成功。步骤如下:
命令行中运行:./bootstrap.sh #此步生成b2、bjam、project-config.jam文件
修改project-config.jam中:using gcc : arm : arm-none-linux-gnueabi-g++ ; #此步arm-none-linux-gnueabi-g++最好用全路径
命令行中运行:./bjam --with-system link=shared variant=released threads=multi #b2和bjam貌似是一样的。
2.arm-none-linux-gnueabi-g++4.6.3编译websocket++程序:
websocket++库本身都是模板,不需要编译,可在自己的项目中直接引用就行。因websocket++依赖boost,而boost里有很多地方用到c++11的新特性关键字noexcept,可能是arm-none-linux-gnueabi-g++4.6.3不支持吧,总报错,于是在引用websocket++头文件之前要先定义宏:#define BOOST_NO_CXX11_NOEXCEPT,以去掉noexcept关键字。然后编译成功.