我有一個bash腳本,爲我的iOS和i386體系結構構建了我的iOS靜態庫。然後,我使用lipo將二進制文件合併爲一個「組合」庫,以便它可以連接到模擬器和設備上。由於某些原因,當我嘗試鏈接到所產生的胖庫時,我仍然遇到連接器錯誤,抱怨在調試時沒有找到i386的符號。我想知道如果在使用lipo之前我沒有正確構建模擬器或iphone庫。有人可以幫我嗎?創建iOS「Fat Library」的問題。
這裏是我的bash腳本:
if [ $1 == "clean" ]
then
echo -e "Perform Clean\n"
if [ -d build ]
then
rm -r build
exit
fi
else
echo -e "Begin combined build process.\n"
XCODEBUILD_PATH=/Applications/Xcode.app/Contents/Developer/usr/bin
XCODEBUILD=$XCODEBUILD_PATH/xcodebuild
echo -e "xcode build executable path: $XCODEBUILD\nBuiding i386 static library.\n"
$XCODEBUILD -project MyLibrary.xcodeproj -target "MyLibrary" -sdk "iphonesimulator" -configuration "Release" clean build
echo -e "Buiding ARM static library.\n"
$XCODEBUILD -project MyLibrary.xcodeproj -target "MyLibrary" -sdk "iphoneos" -configuration "Release" clean build
echo -e "Combine ARM and i386 libs.\nOutput: build/combined/libMyLibrary.a\n"
[ -d build/Release-combined ] || mkdir build/Release-combined
lipo -create -output "build/Release-combined/libMyLibrary.a" "build/Release-iphoneos/libMyLibrary.a" "build/Release-iphonesimulator/libMyLibrary.a"
echo -e "Done!\n"
fi
exit
當我添加對產生的LIB 「編譯/發佈 - 聯合/ libMyLibrary.a」 鏈接。我得到鏈接問題。難道我做錯了什麼?
謝謝!
'file'報告你有兩個arch? –
是的。它說我實際上有3個libMyLibrary.a:Mach-O通用二進制3個架構 libMyLibrary.a(用於架構armv7):\t當前ar歸檔隨機庫 libMyLibrary.a(用於架構armv7s):\t當前ar歸檔隨機庫 libMyLibrary.a(用於體系結構i386):\t當前ar歸檔隨機庫 – Nick
您缺少x86_64我敢打賭,那是在模擬器中使用的 –