iOS 编译socketio静态库

由于socketio依赖boost库,所以要先编译出支持arm64的boost库

1. 编译支持arm64的boost库

我们需要用的是1.68版的boost,因此我选择了手动下载

1.1 官网直接下载指定版本 boost_1_68_0.tar.gz

 [官网地址] (https://www.boost.org/users/history/)

1.2 切换到下载好的cmake所在目录

 $ cd XXX/Desktop/boost_1_68_0

1.3 解压并使用bootstrap.sh 来生产编译工具b2

 $ sh bootstrap.sh

1.4 编译

1.4.1 编译支持x86的库
A. 编译整个库
 $ ./b2
B. 将编译后的库安装到系统默认路径/usr/local/include下
 $ sudo ./b2 install
1.4.2 编译支持arm64的库
A.编写运行脚本并执行
 $ ./myBuildBoost.sh
B. 手动将编译后的库安装到系统默认路径
 头文件存放路径  XXX/Desktop/boost_1_68_0/boost
 库文件存放路径  XXX/Desktop/boost_1_68_0/stage/lib
 系统头文件存放路径  /usr/local/include
 系统库文件存放路径  /usr/local/lib

2. 编译socketio

我们项目里面使用的是socketio c++ 版。

2.1 Git上直接下载

 $ git clone --recurse-submodules https://github.com/socketio/socket.io-client-cpp.git

2.2 更改依赖库

该库需要依赖 websocket++、boost、rapidjson

2.2.1 boost
 之前已经编译好备用
2.2.2 websocket++
 直接下载的socketio库里面包含的这个库有问题 需要重新下载
A. 官网直接下载master分支代码
 官网地址 https://github.com/zaphoyd/websocketpp
B. 下载好之后替换到socketio库
 替换路径 XXX/Desktop/socket.io-client-cpp/lib/websocketpp
2.2.3 rapidjson
 可以直接使用socketio库里面包含的(确保下载的socketio库里的rapidjson不是空的)
 存放路径 XXX//Desktop/socket.io-client-cpp/lib/rapidjson

2.3 编译

2.3.1 使用Xcode进行编译
A. 用Xcode打开socketio源码里的iOS Demo
 路径 XXX/Desktop/socket.io-client-cpp/examples/iOS/SioChatDemo
B. 运行Boost脚本
cd ./boost
bash ./boost.sh
C. 把之前已经编译好的支持arm64的boost静态库全部放进项目中
 库所在路径 XXX/Desktop/boost_1_68_0/stage/lib
D. 增加第三方库搜索路径
 Build settings -> Library Search Path 添加boost在xcode存放的路径
 此处填写为 "$(SRCROOT)/../../../src/lib"
E. 添加依赖库
 Biuild Phases -> Link Binary With Libraries 里添加libc++abi.tbd libc++.1.tbd libc++.tbd
F. 设置Bitcode为NO
 Built Settings -> Bitcode set NO
G. 代码里几处报错的修改
 G.1  std::string("")
 std::string([_messageField.text UTF8String])
 参考链接 [修改参考链接](https://github.com/socketio/socket.io-client-cpp/issues/89)
 G.2  LOG语句末尾处的{}拿掉
H. 编译
 Target 选择 sioclient    cmd + B
 Target 选择 SioChatDemo  cmd + R
 生成的静态库存放的路径  XXX/Xcode/DerivedData/SioChatDemo-fveowidszgfspbeyjcophqkammbt/Build/Products/Debug-iphoneos/libsioclient.a
2.3.2 编译支持HTTPS的socketio库

目前socketio不能同时支持HTTP 和 HTTPS,只能二者选其之一

A. 在socketio给出的demo里导入OpenSSL
A.1 下载OpenSSL库
 下载地址  https://link.jianshu.com/?t=https%3A%2F%2Fgithub.com%2Fx2on%2FOpenSSL-for-iPhone
A.2 编译OpenSSL库
 步骤1: cd 到OpenSSL-for-iPhone-master工程路径
 步骤2:输入命令:./build-libssl.sh(需要跑一会才执行完 )
 步骤3:输入命令:./build-libssl.sh –version=1.1.0c
 执行完后会在demo下生成两个文件夹 如下图	

OpenSSL-build-finish-lib
include

A.3 编译OpenSSL库

注意:以下操作在所有的TARGET和PROJECT里都要进行添加
在这里插入图片描述

A. 配置环境
 步骤1:将include文件拖入工程根目录
 步骤2:将 libcrypto.a 和 libssl.a拖入工程的Frameworks
 步骤3:在 Library Search Paths 中添加 $(inherited) 和 $(SRCROOT)
 步骤4:在 Header Search Paths 中添加 include (直接手动输入,不要加上引用路径)
 步骤5:Always Search User Path 设置为YES
B.增加宏定义
 在 sio_client_impl.h  里增加  #define SIO_TLS 1
C. 编译Release版本的静态库
 步骤1:编译之前 
 	product --> Scheme --> Edit Scheme --> Run --> Build Configuration 更改为Release  然后进行编译
 步骤2:验证结果
 	找到编译出来的.a文件 --> Show in Finder 查看该库是否在Release-iphoneos下
 Debug版本 同理。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值