這裏是一個很好的解決方案,我發現:Static Libs With Support to iOS 5 and Arm64
被修改:
的解決方案是構建使用脂,然後分離結合他們不同的體系結構,通過使用命令行(或Rake文件)。
首先使用xcodebuild聯編構建與ARM二進制:
xcodebuild -project 'StaticLibDemo.xcodeproj' -configuration 'Release' -sdk 'iphoneos7.0' clean build ARCHS='armv7 armv7s' IPHONEOS_DEPLOYMENT_TARGET='5.0' TARGET_BUILD_DIR='./build-arm' BUILT_PRODUCTS_DIR='./build-arm'
請注意,您必須設置IPHONEOS_DEPLOYMENT_TARGET =「5.0」和ARCHS =「的ARMv7 armv7s」,建議設置構建和產品迪爾斯做的事更清楚的,看看構建設置參考瞭解更多細節這個標誌的含義。
下一頁構建arm64:
xcodebuild -project 'StaticLibDemo.xcodeproj' -configuration 'Release' -sdk 'iphoneos7.0' clean build ARCHS='arm64' IPHONEOS_DEPLOYMENT_TARGET='7.0' TARGET_BUILD_DIR='./build-arm64' BUILT_PRODUCTS_DIR='./build-arm64'
註上ARCHS和IPHONEOS_DEPLOYMENT_TARGET的差異。我們還需要建立模擬器,在這種情況下,我們必須改變SDK來iphonesimulator7.0並首先在兩個步驟建立i386的:
xcodebuild -project 'StaticLibDemo.xcodeproj' -configuration 'Release' -sdk 'iphonesimulator7.0' clean build ARCHS='i386' IPHONEOS_DEPLOYMENT_TARGET='5.0' TARGET_BUILD_DIR='./build-i386' BUILT_PRODUCTS_DIR='./build-i386'
現在棘手的問題!如果您只是根據您的Xcode設置將ARCHS更改爲x86_86,則會出現如下錯誤:「x86_64不是有效的arch」。爲了避免這個只需添加VALID_ARCHS =「x86_64的」:
xcodebuild -project 'StaticLibDemo.xcodeproj' -configuration 'Release' -sdk 'iphonesimulator7.0' clean build ARCHS='x86_64' VALID_ARCHS='x86_64' IPHONEOS_DEPLOYMENT_TARGET='7.0' TARGET_BUILD_DIR='./build-x86_64' BUILT_PRODUCTS_DIR='./build-x86_64'
最後,我們只需要創建一個胖二進制的所有5層架構:
lipo -create './build-arm/libStaticLibDemo.a' './build-arm64/libStaticLibDemo.a' './build-i386/libStaticLibDemo.a' './build-x86_64/libStaticLibDemo.a' -output 'libStaticLibDemo.a'
作者創造的這個工作的例子,你可以得到它:https://github.com/diogot/StaticLibDemo
這裏是鏈接到後:Static Libs With Support to iOS 5 and Arm64
所有積分都來Diogo Tridapalli。
對不起,我忘了提及,我需要建立這不使用Xcode,但直接編譯一個傳統的UNIX庫。我正在編輯我的答案以反映這一事實。 – 2010-05-08 09:42:04