0

我有一个 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

当我针对生成的库“build/Release-combined/libMyLibrary.a”添加链接时。我得到链接问题。难道我做错了什么?

谢谢!

4

1 回答 1

0

那么有两种方法可以让 gcc/clang 构建一个不同的拱门。

你可以通过-m32or-m64标志...

但更明确地使用-arch x86_64 -arch i386可以同时传递苹果 clang 和苹果 gcc 中的标志。

于 2013-12-13T16:39:35.637 回答