MacOS上编译PocoC++的IOS版本静态库的操作步骤
Poco版本:poco-1.10.1-all.tar.gz
在iOS开发中主要有iPhone模拟器和iPhone真机以及运行Xcode本身的架构,分别对应的架构为:
1、 模拟器:iPhone5 及以下的模拟器版本为 i386,iPhone5以上的模拟器架构是x86_64
2、 真机: armv7 , armv7s, arm64
3、OSX 的架构是x86_64
准备工作
> gunzip poco-1.10.1-all.tar.gz
> tar -xf poco-1.10.1-all.tar
> cd poco-1.10.1-all
在poco-1.10.1-all/build/config/目录中找到iphone文件,打开进行编辑,并修改以下几处地方:
IPHONE_SDK_ROOT修改为
IPHONE_SDK_ROOT ?= /Applications/Xcode.app/Contents/Developer/Platforms/$(IPHONE_SDK).platform/Developer/SDKs
TOOL_PREFIX修改为
TOOL_PREFIX ?=/Applications/Xcode.app/Contents/Developer/Platforms/$(IPHONE_SDK).platform/Developer/usr/bin
CC和CXX修改为
CC =/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
CXX =/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
开始编译
切换到poco-1.10.1-all目录
真机配置
./configure --config=iPhone --no-tests --no-samples --omit=Crypto,NetSSL_OpenSSL,Data/ODBC,Data/MySQL
模拟器配置
./configure --config=iPhoneSimulator --no-tests --no-samples --omit=Crypto,NetSSL_OpenSSL,Data/ODBC,Data/MySQL
编译
armv7
make IPHONE_SDK_VERSION_MIN=5.0 POCO_TARGET_OSARCH=armv7 -s -j4
armv7s
make IPHONE_SDK_VERSION_MIN=5.0 POCO_TARGET_OSARCH=armv7s -s -j4
arm64
make IPHONE_SDK_VERSION_MIN=5.0 POCO_TARGET_OSARCH=arm64 -s -j4
i386
make IPHONE_SDK_VERSION_MIN=5.0 POCO_TARGET_OSARCH=i386 -s -j4
x86_64
make IPHONE_SDK_VERSION_MIN=5.0 POCO_TARGET_OSARCH=x86_64 -s -j4
lipo
为了使用方便,我们可以制作通用库文件,使用Xcode的lipo命令:
lipo -create 需要合并的文件 -output 生成的目标文件
eg.
lipo -create iPhoneOS/armv7/libPocoFoundation.a iPhoneSimulator/x86_64/armv7/libPocoFoundation.a -output libPocoFoundation.a
查看静态库支持的架构
lipo -info xxxx.a
备注
--config 配置编译脚本,由于Xcode的C和C++编译器是clang和clang++,因此选择iPhone-clang-libc++脚本
-no-tests和--no-samples 表示不编译tests文件和samples文件
--omit 在这里面配置自己不需要的库文件
--include-path 用来配置依赖信息,在这里,由于Crypto和NetSSL_OpenSSL模块依赖于openSSL,因此需要配置openSSL的路径
--static 表示建立静态库文件
--prefix 配置编译好的库文件的存放位置
IPHONE_SDK_VERSION_MIN 设置支持的iPhone的SDK的最低版本
POCO_TARGET_OSARCH 设置平台的架构信息