将 C 库编译到 iOS SDK(交叉编译)
刚好有这个需求,记录下怎么加参数完成交叉编译。
在使用automake进行configure时带上交叉编译参数:
./configure CFLAGS="-arch x86_64 -pipe -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.2.sdk" --host="i686-apple-darwin"
- 其中
arch
参数为target的架构,如x86_64
,arm64
等。 - 其中
host
参数模拟器为i686
,真机为arm
。 - 其中
isysroot
需要指定Xcode的SDK路径,可以用xcrun --sdk "iphonesimulator" --show-sdk-path
得到,其中sdk
参数模拟器为iphonesimulator
,真机为iphoneos
。
将模拟器与真机分别指定target编译后得到的库使用lipo整合:
ls
# result: libfoo-arm64.a libfoo-x86_64.a
lipo -create ./* -output libfoo.a
然后在Project桥接头内include头文件,link整合后的库即可使用。
License:
CC BY 4.0