嵌入式socketiocpp lib交叉编译
环境
服务器端:nodejs
客户端端:c++ libs
目的:得到socketio cpp 库及头文件
1.交叉编译socket依赖环境
-socketio 依赖环境:
- cmake
- rapidjson
- boost
- websocketpp
1.1 获取socket.io-client-cpp libs 源码
下载源码git clone https://github.com/socketio/socket.io-client-cpp.git
1.2 camke编译安装(略)
1.3 boost交叉编译
1. boost官网下载源码(boost_1_57_0.tar.gz)
2. 解压进入当前源码目录。执行./bootstrap.sh --prefix=/home/xx.xx/code/boostopenwrt/(编译后的想要安装的目录)
3. 生成有 b2 和 bjam ,以及一个 project-config.jam 的文件,修改该文件的一行(指定自己的编译器):
using gcc : : /home/xx.xx/work/toolchain-arm_cortex-a7+vfp_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/bin/arm-openwrt-linux-gcc;
4. 执行 ./bjam 即可,这是编译,创建的 lib 文件默认在 stage 文件夹
5. 这样就能在boost_1_57_0/stage/lib/下找到所有的库文件
参考文献:
http://blog.csdn.net/lc250123/article/details/52468121
1.4 交叉编译openssl
1 指定安装目录
./config no-asmshared --prefix= dir
说明:
no-asm 在交叉编译过程中不使用汇编代码代码加速编译过程。
shared 生成动态链接库。
./config no-asm shared --prefix=/home/xx.xx/code/openssl
2 修改openssl源码目录下的makefile文件。
(1)在Makefile中删除-m64(两处)
(2)在makefile中修改编译器
CC=/home/xx.xx/work/toolchain-arm_cortex-a7+vfp_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/bin/arm-openwrt-linux-gcc
AR= /home/xx.xx/work/toolchain-arm_cortex-a7+vfp_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/bin/arm-openwrt-linux-ar $(ARFLAGS) r
RANLIB= /home/jw.li/work/toolchain-arm_cortex-a7+vfp_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/bin/arm-openwrt-linux-ranlib
/home/xx.xx/code/pcre/bin/pcretest
3.make && make install
1.5 rapidjson
1.下载源码 git clone https://github.com/miloyip/rapid
2.将源码目录下的 include/rapidjson copy到socket.io-client-cpp/lib目录下即可
1.6websocketpp
1.下载源码git clone https://github.com/zaphoyd/websocketpp.git
2.下载成功后并不需要做任何工作,直接将websocketpp目录下的websocketpp目录copy到socket.io-client-cpp/lib目录下即可
注:原socket.io-client-cpp/lib目录下的websocketpp目录应该空。
2 在socketio工程根目录下执行
2.1在socketio 源码目录下执行cmake
cmake -DOPENSSL_ROOT_DIR=/home/xx.xx/code/v50openwrt/openssl -DBOOST_ROOT:STRING=/home/xx.xx/code/v50/boost_1_58_0 -DBOOST_VER:STRING=1.58.0 INCLUDE_DIRECTORIES=./lib -DCMAKE_C_COMPILER=/home/xx.xx/work/toolchain-arm_cortex-a7+vfp_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/bin/arm-openwrt-linux-gcc -DCMAKE_CXX_COMPILER=/home/xx.xx/work/toolchain-arm_cortex-a7+vfp_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/bin/arm-openwrt-linux-g++ -DCMAKE_CXX_FLAGS:STRING="-I./lib -std=c++11 -fPIC" ./
- -DOPENSSL_ROOT_DIR(交叉编译后openssl安装目录)
- -DBOOST_ROOT:STRING(交叉编译后boost目录)
- -DBOOST_VER:STRING(boost版本)
- -INCLUDE_DIRECTORIES(相关库所在位置)
- -DCMAKE_C_COMPILER(指定C编译器-C交叉编译器)
- -DCMAKE_CXX_COMPILER(C++交叉编译器)
- -DCMAKE_CXX_FLAGS:STRING(c++编译参数)
2.2 make &&make install
在built目录下既有 socketio 所需的5个lib 及头文件。
3 socketio x86 lib
链接: https://pan.baidu.com/s/1k2y5yzzZjyEosiYSmlCAuw 提取码: grkv