我花了一些时间为arm64编译LibiCal,为iOS(设备和模拟器)编译x86_64架构。我想这可能会对其他人有用。以下是我编译LibiCal-1.0所遵循的步骤。我从下面的链接中获取了代码
为了适应Xcode5.1,我做了一些修改
1)从下面的地址下载LibiCal
http://sourceforge.net/projects/freeassociation/
解压并进入libCal-1.0文件夹。然后运行
./bootstrap
(需要从http://www.jattcode.com/installing-autoconf-automake-libtool-on-mac-osx-mountain-lion/下载make工具)
使用下面的脚本
#!/bin/sh
# SEE: http://www.smallsharptools.com/downloads/libical/
PATH="`xcode-select -print-path`/usr/bin:/usr/bin:/bin"
# set the prefix
PREFIX=${HOME}/Library/libical
OUTPUTDIR=../libical-build
export ARCH=arm64
# Select the desired iPhone SDK
export SDKVER="7.1"
export DEVROOT=`xcode-select --print-path`
export SDKROOT=$DEVROOT/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS${SDKVER}.sdk
export IOSROOT=$DEVROOT/Platforms/iPhoneOS.platform
# Includes
# find $DEVROOT -type d -name include|grep -i iphone|grep -i arm-apple-darwin|grep -vi install-tools|grep -vi simulator
# $SDKROOT/usr/include
# $DEVROOT/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/lib/gcc/arm-apple-darwin10/4.2.1/include
if [ ! -d $DEVROOT ]
then
echo "Developer Root not found! - $DEVROOT"
exit
fi
echo "DEVROOT = $DEVROOT"
if [ ! -d $SDKROOT ]
then
echo "SDK Root not found! - $SDKROOT"
exit
fi
echo "SDKROOT = $SDKROOT"
if [ ! -d $IOSROOT ]
then
echo "iOS Root not found! - $IOSROOT"
exit
fi
echo "IOSROOT = $IOSROOT"
# finding ld
# find $DEVROOT -type f -name ld|grep -i iphone
# Set up relevant environment variables
export CPPFLAGS="-arch $ARCH -I$SDKROOT/usr/include -I$IOSROOT/Developer/usr/llvm-gcc-4.2/lib/gcc/arm-apple-darwin10/4.2.1/include"
export CFLAGS="$CPPFLAGS -pipe -no-cpp-precomp -isysroot $SDKROOT"
export CXXFLAGS="$CFLAGS"
export LDFLAGS="-L$SDKROOT/usr/lib/ -arch $ARCH"
export CLANG=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
#export CC=$IOSROOT/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2
#export CXX=$IOSROOT/Developer/usr/bin/arm-apple-darwin10-llvm-g++-4.2
export CC=$CLANG
export CXX=$CLANG
export LD=$IOSROOT/Developer/usr/bin/ld
export AR=$IOSROOT/Developer/usr/bin/ar
export AS=$IOSROOT/Developer/usr/bin/as
export LIBTOOL=$IOSROOT/usr/bin/libtool
export STRIP=$IOSROOT/Developer/usr/bin/strip
export RANLIB=$IOSROOT/Developer/usr/bin/ranlib
HOST=arm-apple-darwin10
if [ ! -f $CC ]
then
echo "C Compiler not found! - $CC"
exit
fi
if [ ! -f $CXX ]
then
echo "C++ Compiler not found! - $CXX"
exit
fi
if [ ! -f $LD ]
then
echo "Linker not found! - $LD"
exit
fi
if [ -d $OUTPUTDIR/$ARCH ]
then
rm -rf $OUTPUTDIR/$ARCH
fi
find . -name \*.a -exec rm {} \;
make clean
./configure --prefix=$PREFIX --disable-dependency-tracking --host $HOST CXX=$CXX CC=$CC LD=$LD AR=$AR AS=$AS LIBTOOL=$LIBTOOL STRIP=$STRIP RANLIB=$RANLIB
make -j4
# copy the files to the arch folder
mkdir -p $OUTPUTDIR
mkdir -p $OUTPUTDIR/$ARCH
cp `find . -name \*.a` $OUTPUTDIR/$ARCH/
xcrun -sdk iphoneos lipo -info $OUTPUTDIR/$ARCH/*.a
echo $ARCH DONE
echo "See $OUTPUTDIR"修改行:11“导出ARCH=arm64”以获得所需的架构,即arm64,armv7,armv7s。
这应该会在../libical-build文件夹中为所需的体系结构创建bin。
为x86_64构建。
使用以下命令为x86_64运行get build。
tar -xovf libical-1.0.tar
cd libical-1.0
./bootstrap
./configure
make这将在src/libical/.libs/libical.a文件夹中创建libical.a。
创建fat库
使用下面的命令构建fat库。(请使用适当的lipo命令)。
export DEVROT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/lip
$DEVROOT/usr/bin/lipo
-arch arm64 $OUTPUTDIR/armv6/libical.a
-arch i386 $OUTPUTDIR/i386/libical_Simulator.a
-arch armv7 $OUTPUTDIR/x86_64/libical.a
-arch armv7s $OUTPUTDIR/x86_64/libical.a
-arch x86_64 $OUTPUTDIR/x86_64/libical.a
-create -output $OUTPUTDIR/libical_fat_universal.a请设置适当的OUTPUTDIR环境变量。
我希望上面的内容能帮助那些想要快速为iOS构建Libical的人。
发布于 2014-05-08 21:35:12
我已经找到了解决这个问题的方法。我所做的主要工作是添加以下开关
-mios-simulator-version-min=7.0以下是我当前版本的脚本:
#!/bin/sh
set -o xtrace
# SEE: http://www.smallsharptools.com/downloads/libical/
PATH="`xcode-select -print-path`/usr/bin:/usr/bin:/bin"
if [ ! -n "$ARCH" ]; then
export ARCH=armv7
fi
# Select the desired iPhone SDK
export SDKVER="7.1"
export DEVROOT=`xcode-select --print-path`
if [ "i386" = $ARCH ] || [ "x86_64" = $ARCH ]; then
export SDKROOT=$DEVROOT/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator${SDKVER}.sdk
export MIOS="-mios-simulator-version-min=7.0"
else
export SDKROOT=$DEVROOT/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS${SDKVER}.sdk
export MIOS=""
fi;
export IOSROOT=$DEVROOT/Platforms/iPhoneOS.platform
if [ ! -d $DEVROOT ]
then
echo "Developer Root not found! - $DEVROOT"
exit 1
fi
echo "DEVROOT = $DEVROOT"
if [ ! -d $SDKROOT ]
then
echo "SDK Root not found! - $SDKROOT"
exit 1
fi
echo "SDKROOT = $SDKROOT"
if [ ! -d $IOSROOT ]
then
echo "iOS Root not found! - $IOSROOT"
exit 1
fi
echo "IOSROOT = $IOSROOT"
# Set up relevant environment variables
export CPPFLAGS="-arch $ARCH -I$SDKROOT/usr/include $MIOS --debug"
export CFLAGS="$CPPFLAGS -pipe -no-cpp-precomp -isysroot $SDKROOT "
export CXXFLAGS="$CFLAGS"
export LDFLAGS="-L$SDKROOT/usr/lib/ -arch $ARCH"
export CLANG=$DEVROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
export CC=$CLANG
export CXX=$CLANG
export LD=$IOSROOT/Developer/usr/bin/ld
export AR=$IOSROOT/Developer/usr/bin/ar
export AS=$IOSROOT/Developer/usr/bin/as
export LIBTOOL=$IOSROOT/usr/bin/libtool
export STRIP=$IOSROOT/Developer/usr/bin/strip
export RANLIB=$IOSROOT/Developer/usr/bin/ranlib
export LIPO="xcrun -sdk iphoneos lipo"
export HOST=arm-apple-darwin10
if [ ! -f $CC ]
then
echo "C Compiler not found! - $CC"
exit
fi
if [ ! -f $CXX ]
then
echo "C++ Compiler not found! - $CXX"
exit
fi
if [ ! -f $LD ]
then
echo "Linker not found! - $LD"
exit
fi
if [ -d $OUTPUT_DIR/$ARCH ]
then
rm -rf $OUTPUT_DIR/$ARCH
fi
find ./src -name \*.a -exec rm {} \;
make clean
./configure --prefix="$OUTPUT_DIR" --disable-dependency-tracking --host $HOST CXX=$CXX CC=$CC LD=$LD AR=$AR AS=$AS LIBTOOL=$LIBTOOL STRIP=$STRIP RANLIB=$RANLIB
make -j4
# copy the files to the arch folder
mkdir -p $OUTPUT_DIR
mkdir -p $OUTPUT_DIR/$ARCH
cp `find . -name \*.a` $OUTPUT_DIR/$ARCH/
cp config.log $OUTPUT_DIR/$ARCH/config.log
$LIPO -info $OUTPUT_DIR/$ARCH/*.a
echo $ARCH DONE
echo "See $OUTPUT_DIR"我已经开始为这个库构建一个Objective C包装器,你可以在https://github.com/ahalls/XbICalendar上看到这个项目的进展,这个项目需要一些眼球和建议,甚至一些帮助。
发布于 2015-04-02 00:26:08
那些希望使用cmake (来自github)为iOS编译最新版本的libical的人,请在这里查看我的答案:
https://stackoverflow.com/questions/22986302
复制相似问题