iOS 通用交叉编译脚本

这篇博客介绍了如何在iOS环境下进行交叉编译,针对通常在PC上使用的configure、make、make install流程,提出了iOS环境下的解决方案。作者提供了一个适用于iOS的通用交叉编译脚本,该脚本能帮助配置iOS编译所需的特定环境,并已成功应用于bson和lame库的编译。
摘要由CSDN通过智能技术生成


唔. 一般在pc上我们都是

./configure

make

make install

一套打完收工..但是ios上怎么破.? 

-0- 主要是一些环境需要手动配置...

这里写了一些比较常见的环境.


把这玩意放到configure同路径下. 执行这脚本就OK了.


测试bson和lame库都OK


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

BUILD_TARGET=lame 

IOS_MIN_SDK=6.1
 
(
 
PWD=`pwd`
PREFIX=${PWD}/${BUILD_TARGET}

rm -rf ${PREFIX}/platform
mkdir -p ${PREFIX}/platform
 
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="-DNDEBUG -g -O0 -pipe -fPIC -fcxx-exceptions"
CXX=clang
CXXFLAGS="${CFLAGS} -std=c++11 -stdlib=libc++"
LDFLAGS="-stdlib=libc++"
LIBS="-lc++ -lc++abi"



if [ $BUILD_ARMV7_IPHONE -eq 1 ]
then


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


(
		cd ${PWD}
    
		make ${EXTRA_MAKE_FLAGS} distclean
    ./configure --build=x86_64-apple-darwin13.0.0 --host=armv7-apple-darwin13.0.0 --enable-static --disable-shared --prefix=${PREFIX} "CC=${CC}" "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 
		
		cd ${PREFIX}/platform
		rm -rf armv7
		mkdir armv7
		cp ${PREFIX}/lib/*.a ${PREFIX}/platform/armv7
		
)
ARMV7_IPHONE_OUTPUT=`find ${PREFIX}/platform/armv7/*.a`



else

ARMV7_IPHONE_OUTPUT=

fi

if [ $BUILD_ARMV7S_IPHONE -eq 1 ]
then

echo "###################"
echo " armv7s for iPhone"
echo "###################"


(
		cd ${PWD}
		
    make ${EXTRA_MAKE_FLAGS}  distclean
    ./configure --build=x86_64-apple-darwin13.0.0 --host=armv7s-apple-darwin13.0.0 --enable-static --disable-shared --prefix=${PREFIX} "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 
		
		cd ${PREFIX}/platform
		rm -rf armv7s
		mkdir armv7s
		cp ${PREFIX}/lib/*.a ${PREFIX}/platform/armv7s

)
ARMV7S_IPHONE_OUTPUT=`find ${PREFIX}/platform/armv7s/*.a`


else

ARMV7S_IPHONE_OUTPUT=

fi



if [ $BUILD_I386_IOS_SIM -eq 1 ]
then

echo "###########################"
echo " i386 for iPhone Simulator"
echo "###########################"

(
		cd ${PWD}
		make ${EXTRA_MAKE_FLAGS} distclean
    ./configure --build=x86_64-apple-darwin13.0.0 --host=i386-apple-darwin13.0.0 --enable-static --disable-shared --prefix=${PREFIX} "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
		
		
		cd ${PREFIX}/platform
		rm -rf sim
		mkdir sim
		cp ${PREFIX}/lib/*.a ${PREFIX}/platform/sim
)

IOS_SIM_OUTPUT=`find ${PREFIX}/platform/sim/*.a`

else

IOS_SIM_OUTPUT=

fi



echo "############################"
echo " Create Mixd Libraries"
echo "############################"



(

		cd ${PREFIX}/platform
		rm -rf mixd
		mkdir -p mixd

    lipo ${IOS_SIM_OUTPUT} ${ARMV7_IPHONE_OUTPUT} ${ARMV7S_IPHONE_OUTPUT} -create -output ${PREFIX}/platform/mixd/lib${BUILD_TARGET}.a
		
)


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

echo "done"


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值