iOS交叉编译opencore-amr

之前使用的静态库文件不再支持arm64结构,所以需要重新交叉编译静态库文件,从网上找了一段代码,修改之后如下:


#!/bin/sh

###########################################################################
#  Change values here													  #
#																		  #
VERSION="0.1.3"		  											          #
SDKVERSION="8.1"														  #
#																		  #
###########################################################################
#																		  #
# Don't change anything under this line!								  #
#																		  #
###########################################################################

CURRENTPATH=`pwd`
BUILD_LIB_DIR="amr_bin"
OUTPUT_LIB_DIR="amr_libs"

#opencore-amr-0.1.3
# tar zxf opencore-amr-${VERSION}.tar.gz -C "${CURRENTPATH}"
cd "${CURRENTPATH}/opencore-amr-${VERSION}"

# build static libs
build_archs="arm64 armv7 armv7s x86_64 i386"

lipo_amrwb_archs=
lipo_amrnb_archs=
for iarch in $build_archs; do
    case $iarch in
        arm*)
            arch_platform="iPhoneOS"
            ;;
        i386|x86_64)
            arch_platform="iPhoneSimulator"
            ;;
    esac

    echo "Building opencore-amr for ${arch_platform} ${SDKVERSION} ${iarch}"
    echo "Please stand by..."

    SDK="/Applications/Xcode.app/Contents/Developer/Platforms/${arch_platform}.platform/Developer/SDKs/${arch_platform}${SDKVERSION}.sdk"

    arch_dir="${CURRENTPATH}/${BUILD_LIB_DIR}/${arch_platform}${SDKVERSION}.sdk/${iarch}"
    mkdir -p "${arch_dir}"
    LOG="${arch_dir}/build-openamr-${VERSION}.log"

    
    LDFLAGS="-Wl,-syslibroot,$SDK"

    case $iarch in
        arm*)
			export CC="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch ${iarch} --sysroot=${SDK}"
    		export CXX="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -arch ${iarch} --sysroot=${SDK}"
            ./configure --host=arm-apple-darwin --target=darwin --prefix="${arch_dir}" --disable-shared
            ;;
        i386|x86_64)
			export CC="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch ${iarch}"
    		export CXX="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -arch ${iarch}"
            ./configure --prefix="${arch_dir}" --disable-shared
            ;;
    esac

    make >> "${LOG}" 2>&1
    make install >> "${LOG}" 2>&1
    make clean >> "${LOG}" 2>&1

    lipo_amrwb_archs="${lipo_amrwb_archs} ${arch_dir}/lib/libopencore-amrwb.a"
    lipo_amrnb_archs="${lipo_amrnb_archs} ${arch_dir}/lib/libopencore-amrnb.a"
done


echo "Create fat library..."
echo "amrwb: ${lipo_amrwb_archs}"
echo "amrnb: ${lipo_amrnb_archs}"

mkdir -p ${CURRENTPATH}/${OUTPUT_LIB_DIR}/include

lipo $lipo_amrwb_archs -create -output ${CURRENTPATH}/${OUTPUT_LIB_DIR}/libopencore-amrwb.a
lipo $lipo_amrnb_archs -create -output ${CURRENTPATH}/${OUTPUT_LIB_DIR}/libopencore-amrnb.a

cp -R ${CURRENTPATH}/${BUILD_LIB_DIR}/iPhoneSimulator${SDKVERSION}.sdk/i386/include ${CURRENTPATH}/${OUTPUT_LIB_DIR}/include/
echo "Building done."
echo "Cleaning up..."
rm -rf ${CURRENTPATH}/${BUILD_LIB_DIR}
echo "Done."



参考:

1. http://www.oschina.net/question/565065_64591

2. http://sourceforge.net/projects/opencore-amr/

你可能感兴趣的:(iOS交叉编译opencore-amr)