opencore arm iOS编译

1,839 阅读1分钟

opencore-arm-iOS编译支持bitcode的lib文件

下载

git下载地址

起因

最近封装一个XFAudioRecorder库,支持实时音频流回调和实时音量回调,并扩展支持各种音频格式,以前编译生成的opencore-arm-iOS库不支持arm64和bitcode,现在重新编译生成一个opencore-arm-iOS支持x86_64和arm64处理器指令集,且支持bitcode。

编译环境

xcode11.3

编译步骤

  1. 桌面新建arm文件夹。
  2. 将下载最新的opencore-amr-0.1.3.tar.gz拷贝只arm文件夹。
  3. cd到arm文件夹,执行build-lib.sh脚本。

脚本

#!/bin/sh

set -xe

VERSION="0.1.3"                                                           #

SDKVERSION="7.0"

CURRENTPATH=`pwd`

mkdir -p "${CURRENTPATH}/src"
tar zxf opencore-amr-${VERSION}.tar.gz -C "${CURRENTPATH}/src"
cd "${CURRENTPATH}/src/opencore-amr-${VERSION}"

DEVELOPER=`xcode-select -print-path`
DEST="${CURRENTPATH}/opencore-amr-iphone"
mkdir -p "${DEST}"

ARCHS="x86_64 arm64" #最新xcode添加arm64e
LIBS="libopencore-amrnb.a libopencore-amrwb.a"

./configure

for arch in $ARCHS; do
    make clean
    IOSMV=" -miphoneos-version-min=7.0"
    case $arch in
    arm*)
        if [ $arch == "arm64" ]
        then
            IOSMV=" -miphoneos-version-min=7.0"
        fi
        echo "Building opencore-amr for iPhoneOS $arch ****************"
        PATH=`xcodebuild -version -sdk iphoneos PlatformPath`"/Developer/usr/bin:$PATH" \
        SDK=`xcodebuild -version -sdk iphoneos Path` \
        CXX="xcrun --sdk iphoneos clang++ -arch $arch $IOSMV --sysroot=$SDK -isystem $SDK/usr/include  -fembed-bitcode" \
        LDFLAGS="-Wl" \
        ./configure \
        --host=arm-apple-darwin \
        --prefix=$DEST \
        --disable-shared
        ;;
    *)
        echo "Building opencore-amr for iPhoneSimulator $arch *****************"
        PATH=`xcodebuild -version -sdk iphonesimulator PlatformPath`"/Developer/usr/bin:$PATH" \
        CXX="xcrun --sdk iphonesimulator clang++ -arch $arch $IOSMV  -fembed-bitcode" \
        ./configure \
        --host=$arch \
        --prefix=$DEST \
        --disable-shared
        ;;
    esac
    make -j3
    make install
    for i in $LIBS; do
        mv $DEST/lib/$i $DEST/lib/$i.$arch
    done
done

echo "Merge into universal binary."

for i in $LIBS; do
input=""
for arch in $ARCHS; do
input="$input $DEST/lib/$i.$arch"
done
lipo -create -output $DEST/lib/$i $input
done

参考

iOS 中的 armv7,armv7s,arm64,i386,x86_64 都是什么

编译opencore-amr 64位for iOS8并支持bitcode

github.com/feuvan/open…