整理了一份pjsip库的编译脚本,实现一行命令编译PJSIP的Android/IOS库。
Github地址
https://github.com/wei-gong/Android-IOS-Pjsip-Compile-Script
编译Android使用的.so库
将下面的脚本文件拷贝到pjsip的根目录中,直接运行即可开始编译,生成的so库在pjsip-apps/src/swig/java/android/app/src/main/jniLibs/armeabi目录下。
#!/bin/sh
#生成config_site.h文件
touch pjlib/include/pj/config_site.h
echo "#include <pj/config_site_sample.h>
#define PJ_CONFIG_ANDROID 1
" > pjlib/include/pj/config_site.h
#设置使用的ndk路径和Android版本
export ADNROID_NDK_ROOT=~/Library/Android/android-ndk-r15c
export APP_PLATFORM=android-21
#如果编译除armeabi外的CPU架构的so库,需要增加--use-ndk-cflags
#export TARGET_ABI=armeabi-v7a
#./configure-android --use-ndk-cflags
export TARGET_ABI=armeabi
./configure-android
make dep && make clean && make
cd pjsip-apps/src/swig
make clean
make
rm ../../../pjlib/include/pj/config_site.h
编译Iphone使用的.a库
将下面的脚本文件拷贝到pjsip的根目录中,直接运行即可开始编译,生成的.a库在lib目录下。
#!/bin/sh
touch pjlib/include/pj/config_site.h
echo "#define PJ_CONFIG_IPHONE 1
#include <pj/config_site_sample.h>
" > pjlib/include/pj/config_site.h
export MIN_IOS="-miphoneos-version-min=8.0"
export DEVPATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer
#编译 i386、x86_64、armv7、armv7s、arm64 5种CPU架构
export ARCH="-arch i386" CFLAGS="-O2 -m32 -mios-simulator-version-min=8.0" LDFLAGS="-O2 -m32 -mios-simulator-version-min=8.0"
./configure-iphone
make dep && make clean && make
export ARCH="-arch x86_64" CFLAGS="-O2 -m64 -mios-simulator-version-min=8.0" LDFLAGS="-O2 -m64 -mios-simulator-version-min=8.0"
./configure-iphone
make dep && make clean && make
export ARCH="-arch armv7"
./configure-iphone
make dep && make clean && make
export ARCH="-arch armv7s"
./configure-iphone
make dep && make clean && make
export ARCH="-arch arm64"
./configure-iphone
make dep && make clean && make
#合并5种CPU架构的.a库
lipo -arch armv7 third_party/lib/libg7221codec-armv7-apple-darwin_ios.a -arch armv7s third_party/lib/libg7221codec-armv7s-apple-darwin_ios.a -arch i386 third_party/lib/libg7221codec-i386-apple-darwin_ios.a -arch x86_64 third_party/lib/libg7221codec-x86_64-apple-darwin_ios.a -arch arm64 third_party/lib/libg7221codec-arm64-apple-darwin_ios.a -create -output lib/libg7221codec.a
lipo -arch armv7 third_party/lib/libgsmcodec-armv7-apple-darwin_ios.a -arch armv7s third_party/lib/libgsmcodec-armv7s-apple-darwin_ios.a -arch i386 third_party/lib/libgsmcodec-i386-apple-darwin_ios.a -arch x86_64 third_party/lib/libgsmcodec-x86_64-apple-darwin_ios.a -arch arm64 third_party/lib/libgsmcodec-arm64-apple-darwin_ios.a -create -output lib/libgsmcodec.a
lipo -arch armv7 third_party/lib/libilbccodec-armv7-apple-darwin_ios.a -arch armv7s third_party/lib/libilbccodec-armv7s-apple-darwin_ios.a -arch i386 third_party/lib/libilbccodec-i386-apple-darwin_ios.a -arch x86_64 third_party/lib/libilbccodec-x86_64-apple-darwin_ios.a -arch arm64 third_party/lib/libilbccodec-arm64-apple-darwin_ios.a -create -output lib/libilbccodec.a
lipo -arch armv7 pjlib/lib/libpj-armv7-apple-darwin_ios.a -arch armv7s pjlib/lib/libpj-armv7s-apple-darwin_ios.a -arch i386 pjlib/lib/libpj-i386-apple-darwin_ios.a -arch x86_64 pjlib/lib/libpj-x86_64-apple-darwin_ios.a -arch arm64 pjlib/lib/libpj-arm64-apple-darwin_ios.a -create -output lib/libpj.a
lipo -arch armv7 pjlib-util/lib/libpjlib-util-armv7-apple-darwin_ios.a -arch armv7s pjlib-util/lib/libpjlib-util-armv7s-apple-darwin_ios.a -arch i386 pjlib-util/lib/libpjlib-util-i386-apple-darwin_ios.a -arch x86_64 pjlib-util/lib/libpjlib-util-x86_64-apple-darwin_ios.a -arch arm64 pjlib-util/lib/libpjlib-util-arm64-apple-darwin_ios.a -create -output lib/libpjlib-util.a
lipo -arch armv7 pjmedia/lib/libpjmedia-audiodev-armv7-apple-darwin_ios.a -arch armv7s pjmedia/lib/libpjmedia-audiodev-armv7s-apple-darwin_ios.a -arch i386 pjmedia/lib/libpjmedia-audiodev-i386-apple-darwin_ios.a -arch x86_64 pjmedia/lib/libpjmedia-audiodev-x86_64-apple-darwin_ios.a -arch arm64 pjmedia/lib/libpjmedia-audiodev-arm64-apple-darwin_ios.a -create -output lib/libpjmedia-audiodev.a
lipo -arch armv7 pjmedia/lib/libpjmedia-codec-armv7-apple-darwin_ios.a -arch armv7s pjmedia/lib/libpjmedia-codec-armv7s-apple-darwin_ios.a -arch i386 pjmedia/lib/libpjmedia-codec-i386-apple-darwin_ios.a -arch x86_64 pjmedia/lib/libpjmedia-codec-x86_64-apple-darwin_ios.a -arch arm64 pjmedia/lib/libpjmedia-codec-arm64-apple-darwin_ios.a -create -output lib/libpjmedia-codec.a
lipo -arch armv7 pjmedia/lib/libpjmedia-videodev-armv7-apple-darwin_ios.a -arch armv7s pjmedia/lib/libpjmedia-videodev-armv7s-apple-darwin_ios.a -arch i386 pjmedia/lib/libpjmedia-videodev-i386-apple-darwin_ios.a -arch x86_64 pjmedia/lib/libpjmedia-videodev-x86_64-apple-darwin_ios.a -arch arm64 pjmedia/lib/libpjmedia-videodev-arm64-apple-darwin_ios.a -create -output lib/libpjmedia-videodev.a
lipo -arch armv7 pjmedia/lib/libpjmedia-armv7-apple-darwin_ios.a -arch armv7s pjmedia/lib/libpjmedia-armv7s-apple-darwin_ios.a -arch i386 pjmedia/lib/libpjmedia-i386-apple-darwin_ios.a -arch x86_64 pjmedia/lib/libpjmedia-x86_64-apple-darwin_ios.a -arch arm64 pjmedia/lib/libpjmedia-arm64-apple-darwin_ios.a -create -output lib/libpjmedia.a
lipo -arch armv7 pjnath/lib/libpjnath-armv7-apple-darwin_ios.a -arch armv7s pjnath/lib/libpjnath-armv7s-apple-darwin_ios.a -arch i386 pjnath/lib/libpjnath-i386-apple-darwin_ios.a -arch x86_64 pjnath/lib/libpjnath-x86_64-apple-darwin_ios.a -arch arm64 pjnath/lib/libpjnath-arm64-apple-darwin_ios.a -create -output lib/libpjnath.a
lipo -arch armv7 pjsip/lib/libpjsip-simple-armv7-apple-darwin_ios.a -arch armv7s pjsip/lib/libpjsip-simple-armv7s-apple-darwin_ios.a -arch i386 pjsip/lib/libpjsip-simple-i386-apple-darwin_ios.a -arch x86_64 pjsip/lib/libpjsip-simple-x86_64-apple-darwin_ios.a -arch arm64 pjsip/lib/libpjsip-simple-arm64-apple-darwin_ios.a -create -output lib/libpjsip-simple.a
lipo -arch armv7 pjsip/lib/libpjsip-ua-armv7-apple-darwin_ios.a -arch armv7s pjsip/lib/libpjsip-ua-armv7s-apple-darwin_ios.a -arch i386 pjsip/lib/libpjsip-ua-i386-apple-darwin_ios.a -arch x86_64 pjsip/lib/libpjsip-ua-x86_64-apple-darwin_ios.a -arch arm64 pjsip/lib/libpjsip-ua-arm64-apple-darwin_ios.a -create -output lib/libpjsip-ua.a
lipo -arch armv7 pjsip/lib/libpjsip-armv7-apple-darwin_ios.a -arch armv7s pjsip/lib/libpjsip-armv7s-apple-darwin_ios.a -arch i386 pjsip/lib/libpjsip-i386-apple-darwin_ios.a -arch x86_64 pjsip/lib/libpjsip-x86_64-apple-darwin_ios.a -arch arm64 pjsip/lib/libpjsip-arm64-apple-darwin_ios.a -create -output lib/libpjsip.a
lipo -arch armv7 pjsip/lib/libpjsua-armv7-apple-darwin_ios.a -arch armv7s pjsip/lib/libpjsua-armv7s-apple-darwin_ios.a -arch i386 pjsip/lib/libpjsua-i386-apple-darwin_ios.a -arch x86_64 pjsip/lib/libpjsua-x86_64-apple-darwin_ios.a -arch arm64 pjsip/lib/libpjsua-arm64-apple-darwin_ios.a -create -output lib/libpjsua.a
lipo -arch armv7 pjsip/lib/libpjsua2-armv7-apple-darwin_ios.a -arch armv7s pjsip/lib/libpjsua2-armv7s-apple-darwin_ios.a -arch i386 pjsip/lib/libpjsua2-i386-apple-darwin_ios.a -arch x86_64 pjsip/lib/libpjsua2-x86_64-apple-darwin_ios.a -arch arm64 pjsip/lib/libpjsua2-arm64-apple-darwin_ios.a -create -output lib/libpjsua2.a
lipo -arch armv7 third_party/lib/libresample-armv7-apple-darwin_ios.a -arch armv7s third_party/lib/libresample-armv7s-apple-darwin_ios.a -arch i386 third_party/lib/libresample-i386-apple-darwin_ios.a -arch x86_64 third_party/lib/libresample-x86_64-apple-darwin_ios.a -arch arm64 third_party/lib/libresample-arm64-apple-darwin_ios.a -create -output lib/libresample.a
lipo -arch armv7 third_party/lib/libspeex-armv7-apple-darwin_ios.a -arch armv7s third_party/lib/libspeex-armv7s-apple-darwin_ios.a -arch i386 third_party/lib/libspeex-i386-apple-darwin_ios.a -arch x86_64 third_party/lib/libspeex-x86_64-apple-darwin_ios.a -arch arm64 third_party/lib/libspeex-arm64-apple-darwin_ios.a -create -output lib/libspeex.a
lipo -arch armv7 third_party/lib/libsrtp-armv7-apple-darwin_ios.a -arch armv7s third_party/lib/libsrtp-armv7s-apple-darwin_ios.a -arch i386 third_party/lib/libsrtp-i386-apple-darwin_ios.a -arch x86_64 third_party/lib/libsrtp-x86_64-apple-darwin_ios.a -arch arm64 third_party/lib/libsrtp-arm64-apple-darwin_ios.a -create -output lib/libsrtp.a
lipo -arch armv7 third_party/lib/libwebrtc-armv7-apple-darwin_ios.a -arch armv7s third_party/lib/libwebrtc-armv7s-apple-darwin_ios.a -arch i386 third_party/lib/libwebrtc-i386-apple-darwin_ios.a -arch x86_64 third_party/lib/libwebrtc-x86_64-apple-darwin_ios.a -arch arm64 third_party/lib/libwebrtc-arm64-apple-darwin_ios.a -create -output lib/libwebrtc.a
lipo -arch armv7 third_party/lib/libyuv-armv7-apple-darwin_ios.a -arch armv7s third_party/lib/libyuv-armv7s-apple-darwin_ios.a -arch i386 third_party/lib/libyuv-i386-apple-darwin_ios.a -arch x86_64 third_party/lib/libyuv-x86_64-apple-darwin_ios.a -arch arm64 third_party/lib/libyuv-arm64-apple-darwin_ios.a -create -output lib/libyuv.a
rm pjlib/include/pj/config_site.h