我使用以下命令在终端中编译库以获取armv7切片:
./configure CC=/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2 --host=arm
注意:我也改变了ldflags,sysroot来提供相关的路径,虽然我没有在这里说明这一点。
我已成功为i686,i386和armv7生成代码片段并将它们组合在一起,但我无法获得armv7s
片段。
我对 armv7s 代码片使用了哪些设置?
答案 0 :(得分:1)
您应在-arch armv7s
中指定CFLAGS
。以下是我用来构建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
答案 1 :(得分:0)
我结合了当前三种设备架构的crt.1.x.x.0,libarclite和libclang Xcode,以便为我的iOS应用程序支持armv6,armv7和armv7s。
Original 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/
,我不确定X6构建平台i686属于什么,因为我不记得以前看过,但如果它是iPhoneSimulator.platform,它将与i386平台在同一个文件中。
您可能还想将i686和i386添加到构建设置中。以下是我为armv6,armv7和armv7s构建的架构设置。
如果这不起作用,您还可以单独构建i686,i386和armv7s,并将构建的二进制文件与lipo
合并。