在mac上为ios编译mono

1.下载源码到mac

2.打开终端,解压源码 tar xvf mono-VERSION.tar.gz

3.进入源码目录 cd mono-VERSION

4.配置

在mono源码目录中创建文本文件xcrun,将以下命令拷贝进去,在终端中执行./xcrun,完成之后,可以在mono_target目录中看到已经安装完成的三个目录,armv7,armv7s,sim

注意1:如果源码不是从git克隆出来,而是从官方下载的tar源码包,编译过程出现找不到route.h的情况,则可能源码中缺少这个文件,可以从git库中拷贝此文件。

注意2:如果编译过程出现cannot run test program while cross compiling 错误,可以根据提示,打开configure文件,修改对应的条件选项使跳过错误检查。参考:http://blog.csdn.net/qihuanfengyun/article/details/5385043


#!/bin/bash
BUILD_I386_IOS_SIM=1
BUILD_ARMV7_IPHONE=1
BUILD_ARMV7S_IPHONE=1
BUILD_TARGET=mono_target


IOS_MIN_SDK=6.1
(
PWD=`pwd`
PREFIX=${PWD}/${BUILD_TARGET}
rm -rf ${PREFIX}
mkdir -p ${PREFIX}


EXTRA_MAKE_FLAGS="-j4"


XCODEDIR=`xcode-select --print-path`


IOS_SDK=$(xcodebuild -showsdks | grep iphoneos | sort | head -n 1 | awk '{print $NF}')
SIM_SDK=$(xcodebuild -showsdks | grep iphonesimulator | sort | head -n 1 | awk '{print $NF}')


IPHONEOS_PLATFORM=${XCODEDIR}/Platforms/iPhoneOS.platform
IPHONEOS_SYSROOT=${IPHONEOS_PLATFORM}/Developer/SDKs/${IOS_SDK}.sdk


IPHONESIMULATOR_PLATFORM=${XCODEDIR}/Platforms/iPhoneSimulator.platform
IPHONESIMULATOR_SYSROOT=${IPHONESIMULATOR_PLATFORM}/Developer/SDKs/${SIM_SDK}.sdk


CC=clang
CFLAGS="-O2 -std=gnu99 -DHOST_IOS"
CXX=clang
CXXFLAGS="${CFLAGS} -stdlib=libc++"
LDFLAGS="-stdlib=libc++"
LIBS="-lc++ -lc++abi"
CPP="xcrun -sdk iphoneos cpp"
AR="xcrun -sdk iphoneos ar rcu"
CPPFLAGS="${CFLAGS}"


if [ $BUILD_ARMV7_IPHONE -eq 1 ]
then


echo "##################"
echo " armv7 for iPhone"
echo "##################"




(
make clean
    ./configure  --enable-small-config=yes --with-ikvm-native=no --with-sigaltstack=no --with-tls=pthread --without-mcs-docs --disable-mcs-build --enable-nls=no --enable-minimal=profiler,logging,full_messages,reflection_emit,reflection_emit_save --build=x86_64-apple-darwin --host=armv7-apple-darwin --prefix="${PREFIX}/armv7" CC=clang "CFLAGS=${CFLAGS} -miphoneos-version-min=${IOS_MIN_SDK} -arch armv7 -isysroot ${IPHONEOS_SYSROOT}" "CXX=${CXX}" "CXXFLAGS=${CXXFLAGS} -arch armv7 -isysroot ${IPHONEOS_SYSROOT}" LDFLAGS="-arch armv7 -miphoneos-version-min=${IOS_MIN_SDK} ${LDFLAGS}" "LIBS=${LIBS}"
make ${EXTRA_MAKE_FLAGS}
make ${EXTRA_MAKE_FLAGS} install
)


fi
if [ $BUILD_ARMV7S_IPHONE -eq 1 ]
then
echo "###################"
echo " armv7s for iPhone"
echo "###################"
 (
  make clean
    ./configure  --enable-small-config=yes --with-ikvm-native=no --with-sigaltstack=no --with-tls=pthread --without-mcs-docs --disable-mcs-build --enable-nls=no --enable-minimal=profiler,logging,full_messages,reflection_emit,reflection_emit_save --build=x86_64-apple-darwin --host=armv7s-apple-darwin --prefix="${PREFIX}/armv7s" "CC=${CC}" "CFLAGS=${CFLAGS} -miphoneos-version-min=${IOS_MIN_SDK} -arch armv7s -isysroot ${IPHONEOS_SYSROOT}" "CXX=${CXX}" "CXXFLAGS=${CXXFLAGS} -arch armv7s -isysroot ${IPHONEOS_SYSROOT}" LDFLAGS="-arch armv7s -miphoneos-version-min=${IOS_MIN_SDK} ${LDFLAGS}" "LIBS=${LIBS}"
    make ${EXTRA_MAKE_FLAGS}
make ${EXTRA_MAKE_FLAGS} install
)
fi


if [ $BUILD_I386_IOS_SIM -eq 1 ]
then
echo "###########################"
echo " i386 for iPhone Simulator"
echo "###########################"
 (
  make clean
    ./configure  --enable-small-config=yes --with-ikvm-native=no --with-sigaltstack=no --with-tls=pthread --without-mcs-docs --disable-mcs-build --enable-nls=no --enable-minimal=profiler,logging,full_messages,reflection_emit,reflection_emit_save --build=x86_64-apple-darwin --host=i386-apple-darwin --prefix="${PREFIX}/sim" "CC=${CC}" "CFLAGS=${CFLAGS} -miphoneos-version-min=${IOS_MIN_SDK} -arch i386 -isysroot ${IPHONESIMULATOR_SYSROOT}" "CXX=${CXX}" "CXXFLAGS=${CXXFLAGS} -arch i386 -isysroot ${IPHONESIMULATOR_SYSROOT}" LDFLAGS="-arch i386 -miphoneos-version-min=${IOS_MIN_SDK} ${LDFLAGS}" "LIBS=${LIBS}"
    make ${EXTRA_MAKE_FLAGS}
make ${EXTRA_MAKE_FLAGS} install
)
fi


) 2>&1
#) >build.log 2>&1


echo "done"



你可能感兴趣的:(ios,Mono)