opencore-arm-iOS编译支持bitcode的lib文件
下载
起因
最近封装一个XFAudioRecorder库,支持实时音频流回调和实时音量回调,并扩展支持各种音频格式,以前编译生成的opencore-arm-iOS库不支持arm64和bitcode,现在重新编译生成一个opencore-arm-iOS支持x86_64和arm64处理器指令集,且支持bitcode。
编译环境
xcode11.3
编译步骤
- 桌面新建arm文件夹。
- 将下载最新的opencore-amr-0.1.3.tar.gz拷贝只arm文件夹。
- 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 都是什么