Pjsip编译脚本Android/IOS

本文介绍了一款用于一键编译PJSIP库的脚本,支持Android和iOS平台,简化了跨平台音视频应用开发流程。通过简单的脚本操作,即可在不同平台上生成所需的动态链接库(.so)和静态链接库(.a),适用于多种CPU架构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整理了一份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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值