嵌入式socketiocpp lib交叉编译

来源:互联网 发布:sql server access 编辑:程序博客网 时间:2024/05/22 05:27

嵌入式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-asmshared–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 ./

  • -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 及头文件。

原创粉丝点击