3

我正在使用以下命令在终端中编译库以获取 armv7 切片:

./configure CC=/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2 --host=arm

注意:我还更改了 ldflags、sysroot 以提供相关路径,尽管我没有在这里显示以保持简短。

我已成功生成以下代码片段:i686、i386 和 armv7 并将它们组合在一起,但我无法获得armv7s片段。

我对armv7s代码片使用什么设置?

4

2 回答 2

1

您应该-arch armv7sCFLAGS. 下面是我用来构建的ICU

INSTALL=`pwd`/..

if [ $# -eq 0 ]
then
    $0 armv7 iPhoneOS
    $0 armv7s iPhoneOS
    $0 i386 iPhoneSimulator
    mkdir -p $INSTALL/universal/lib
    cd $INSTALL/armv7/lib
    for f in *.a
    do
        echo $f
        xcrun -sdk iphoneos lipo -output ../../universal/lib/$f -create -arch armv7 $f -arch armv7s ../../armv7s/lib/$f -arch i386 ../../i386/lib/$f
    done
    #cd ../..
else
    echo $1 $2
    ARCH=$1
    PLATFORM=$2
    TOOLCHAIN=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
    export CC="$TOOLCHAIN/usr/bin/clang"
    DEVROOT=/Applications/Xcode.app/Contents/Developer/Platforms/$PLATFORM.platform/Developer
    SDK=6.1
    SDKROOT=$DEVROOT/SDKs/$PLATFORM$SDK.sdk
    export CFLAGS="-arch $ARCH -isysroot $SDKROOT -miphoneos-version-min=5.0 -I/Users/xxx/icu/source/tools/tzcode"
    export CXXFLAGS="$CFLAGS" 

    gnumake distclean

    ../../icu/source/configure --host=arm-apple-darwin --enable-static --disable-shared --with-cross-build=/Users/xxx/icu-build/mac --prefix=$INSTALL/$ARCH

    gnumake
    gnumake install
fi

你可以做类似的事情来得到你想要的。

编辑:如何用clang调用make:

export CFLAGS=-arch armv7s # add more compiler flags as needed here
export CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
make
于 2013-07-29T05:32:22.943 回答
0

我结合了当前三种设备架构的 crt.1.xx0、libarclite 和 libclang Xcode,以便为我的 iOS 应用程序支持 armv6、armv7 和 armv7s。

帮助我的原始 Stack Overflow 帖子:https ://stackoverflow.com/a/12836808/761902 。

由于您尝试将 ARM(传统 iOS 设备)和 Intel(OS X 计算机)架构编译到一个文件中,您可以尝试获取原始帖子中指定的 crt、libarclite 和 libclang 文件。

由于 ARM 文件位于 Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/,

我希望等效的 i386 文件位于下 Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/ ,我不确定 Xcode 构建平台 i686 属于什么,因为我不记得以前见过,但如果它是 iPhoneSimulator.platform,它将在同一个文件中作为i386平台。

您可能还想将 i686 和 i386 添加到您的构建设置中。以下是我为 armv6、armv7 和 armv7s 构建的架构设置。 Xcode 构建设置

如果这不起作用,您还可以分别构建 i686、i386 和 armv7s,并将构建的二进制文件与lipo.

于 2013-07-29T04:38:36.053 回答