我有一个bash脚本,可以为ARM和i386架构构建我的iOS静态库。然后我使用lipo将二进制文件组合成一个单独的"组合"库,以便它可以在模拟器和设备上链接。出于某种原因,当我尝试链接到生成的胖库时,我仍然会收到链接器错误,抱怨在调试时找不到i386的符号。我想知道在使用lipo之前我是否没有正确构建模拟器或iphoneos库。有人可以帮助我吗?
这是我的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" build / Release-combined / libMyLibrary.a"添加链接时。我得到了链接问题。我做错了吗?
谢谢!
答案 0 :(得分:0)
有两种方法可以让gcc / clang构建不同的拱门。
您可以传递-m32
或-m64
标志......
但是更明确的是使用{cone clang和apple gcc中的-arch x86_64 -arch i386
标志可以同时传递。