Configure:
./configure:该命令是我们所需要注意和配置的地方,这个配置决定了我们所生产出来的静态库的平台(构建版本和操作系统)
这里我们只牵扯到iOS系统对应的构建版本,在此说明一下:
x86: 如果你的静态库需要在iOS simulator上运行且你的Mac OS是32位系统,需要打这个构建版本。
x86_64: x86的64位版本,你的Mac OS版本是64位,打这个版本
armv7: iPhone 4s上使用的构建版本
armv7s: iPhone 5上使用的构建版本
arm64: iPhone 5s以上使用的构建版本(如果你的app只支持iOS11,那么你就只打这个版本就可以了)
下面,我们具体说一下该如何确定配置:
xcodebuild -showsdks 2>/dev/null //列出支持的 sdk xcrun --sdk iphoneos --show-sdk-path 2>/dev/null //得到isysroot path
//我的Xcode是8.3的,iPhoneSDK是10.3 $ export CFLAGS="-arch arm64 -isysroot ${上一步得到的 path} -miphoneos-version-min=10.0 -fembed-bitcode -DNDEBUG -Wno-sign-compare" //这里定义了CFLAGS这个标志,代表的我们使用的编译器相关的内容。 //host: 交叉编译的库所运行的系统, prefix: 库存放位置,默认为/usr/local/lib $ ./configure --host=arm-apple-darwin --prefix=$PWD/build/arm64 //默认会打出静态包(.a)和分享包(.dylib) $ make && make install
其实CFLAGS里的东西不需要搞得很明白,需要明白几点就是:
arch: 构建的版本对应一定是你所需要打的版本 isysroot: 我们的iPhoneSDK所存放的位置 miphoneos-version-min: 你所要sdk支持的iPhone最低版本 -fembed-bitcode: 生成bitcode指令
多版本融合:
最后提一点,就是打包的时候,可能会构建多版本(x86,x86_64,armv7s,arm64),那么你需要注意的就是将这些包融合为一个,使用lipo命令:
$ lipo -create /path/to/library1 /path/to/library2 /path/to/library3 -output /path/to/universal_library.a