Ios 为所有架构编译PJSIP2.5库
为了编译iPhone设备的PJSIP库,我使用以下代码Ios 为所有架构编译PJSIP2.5库,ios,makefile,build,voip,pjsip,Ios,Makefile,Build,Voip,Pjsip,为了编译iPhone设备的PJSIP库,我使用以下代码 make distclean && make clean ARCH='-arch arm64' ./configure-iphone --enable-opus-codec make dep make 此代码允许我仅为单个体系结构安装应用程序。 要为所有架构(armv7、armv7s、arm64、i386、x86_64)编译pjsip,我可以使用哪个命令或工具为所有设备编译 分别为所有设备编译 合并脂肪 例如 -创建/li
make distclean && make clean
ARCH='-arch arm64' ./configure-iphone --enable-opus-codec
make dep
make
此代码允许我仅为单个体系结构安装应用程序。
要为所有架构(armv7、armv7s、arm64、i386、x86_64)编译pjsip,我可以使用哪个命令或工具为所有设备编译
-创建/libsrtp-arm64-apple-darwin\u ios.a/libsrtp-i386-apple-darwin\u ios.a-输出文件名
然后使用output\u file\u name.a
作为所有设备和模拟器的通用库
要检查支持的体系结构:output\u file\u name.a
lipo-静态库的信息名称
输出:
/libsrtp-universal-apple-darwin_ios.a是:armv7 armv7s i386 x86_64 arm64
谢谢
合并如下所示
lipo-create/My\Project/pjsip universal/x86_64/libgsmcodec-x86_64-apple-darwin_ios.a/My\Project/pjsip universal/i386/libgsmcodec-i386-apple-darwin_ios.a/My\Project/pjsip universal/armv7s/libgsmcodec-armv7s-apple-darwin_ios.alibgsmcodec-armv7-apple-darwin\u ios.a/My\Project/pjsip universal/arm64/libgsmcodec-arm64-apple-darwin\u ios.a-output/My\Project/pjsip universal/universal/libgsmcodec-universal-apple-darwin\u ios.a
最后测试一下
lipo-info/My\Project/pjsip universal/libgsmcodec-universal-apple-darwin\u ios.a
输出:
fat文件中的架构:/My Project/pjsip universal/libgsmcodec-universal-apple-darwin_ios.a是:i386 armv7s armv7 x86_64 arm64
生成通用体系结构后:
按照此链接从链接中的此行添加到项目中
将头文件添加到项目中
希望这能对您有所帮助。我们编写了一个cocoapod,它将创建一个静态库,您可以将其包含在项目中。目前,您只能在Objective C CoCoPapod环境中使用它。我们正在开发一个版本,该版本将创建一个动态库,以便与Swift一起使用 请在以下网址查阅: 我们制作了一个开源包装器,使在iOS项目中集成PJSIP变得更加容易:
——构建PJSIP库的一种方法——使用PJSIP2.6进行测试
//为XCode 8更新。
建筑PJSIP
$cd/Users/ravimalviya/Developer/Dev2/trunk
//如果要指定支持的最低iOS版本
//export MIN_IOS=“-miphoneos版本MIN=8.0”
使用armv7架构为默认iPhone4编译库和构建
$/配置iphone&&make-dep&&make-clean&&make
为iphone5构建,使用armv7s架构
$ARCH='-ARCH armv7s'/配置iphone&&make dep&&make clean&&make
为iPhone 5s构建,使用arm64架构
$ARCH='-ARCH arm64'/配置iphone&&make dep&&make clean&&make
为模拟器构建,使用i386架构
导出DEVPATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer
ARCH=“-ARCH i386”CFLAGS=“-O2-m32-mios模拟器最低版本=5.0”LDFLAGS=“-O2-m32-mios模拟器最低版本=5.0”。/configure iphone
使dep和make干净和使
为模拟器构建,使用x86_64体系结构
导出DEVPATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer
ARCH=“-ARCH x86_64”CFLAGS=“-O2-m32-mios模拟器最低版本=5.0”LDFLAGS=“-O2-m32-mios模拟器最低版本=5.0”。/configure iphone
使dep和make干净和使
汇编结果
pjlib/lib
pjlib util/lib
pjmedia/lib
pjsip/lib
pjnath/lib
第三方/自由党
注:添加到项目中。。
合并生成的体系结构(arm64、armv7、armv7s、i386、x86_64)支持的库。
//转到收集所有生成库的目录。创建文件夹名称arm64、armv7s、armv7、i386、x86_64并分别放置所有库。每个都只有一个受arch支持的库文件。
//重命名所有这5个文件夹中的文件这是创建通用库的简单方法。
//还要创建名为unified的文件夹,所有unversal库都将在其中创建。
$export LIB_NAME=“libg7221codec.a”
$lipo-arch armv7 armv7/$LIB_NAME-arch armv7s armv7s/$LIB_NAME-arch arm64 arm64/$LIB_NAME-arch i386 i386/$LIB_NAME-arch x86_64/$LIB_NAME-create-output unified/$LIB_NAME
//-arch armv7s armv7s/$LIB_NAME表示支持armv7s从仅支持armv7s的目录armv7s/$LIB_NAME和$LIB_NAME文件名中获取库。
//-arch arm64 arm64/$LIB_名称。。。。。。。。。。。。
//-arch armv7 armv7/$LIB_名称。。。。。。。。。。。。
//-拱门i386 i386/$LIB_名称。。。。。。。。。。。。。。
//-拱门x86_64 x86_64/$LIB_名称。。。。。。。。。。。。。。
//unified/$LIB_NAME是使用lips构建unversal库的目录。与导出的$LIB_名称相同。做同样的事。
//检查您的库所支持的拱门
xcrun-sdk iphoneos lipo-info unified/$LIB_NAME
$export LIB_NAME=“libgsmcodec.a”
$lipo-arch armv7 armv7/$LIB_NAME-arch armv7s armv7s/$LIB_NAME-arch arm64 arm64/$LIB_NAME-arch i386 i386/$LIB_NAME-arch x86_64/$LIB_NAME-create-output unified/$LIB_NAME
$export LIB_NAME=“libilbccodec.a”
$..…与lipo中的上述内容相同。。。。。。
$export LIB_NAME=“libpj.a”
$..…与lipo中的上述内容相同。。。。。。
$export LIB_NAME=“libpjlib util.a”
$..…与lipo中的上述内容相同。。。。。。
$export LIB_NAME=“libpjmedia audiodev.a”
$..…与lipo中的上述内容相同。。。。。。
$export LIB_NAME=“libpjmedia codec.a”
$..…与lipo中的上述内容相同。。。。。。
$export LIB_NAME=“libpjmedia videodev.a”
$..…与lipo中的上述内容相同。。。。。。
$export LIB_NAME=“libpjmedia.a”
$..…与lipo中的上述内容相同。。。。。。
$export LIB_NAME=“libpjnath.a”
$..…与lipo中的上述内容相同。。。。。。
$export LIB_NAME=“libpjsdp.a”
$..…与lipo中的上述内容相同。。。。。。
$export LIB_NAME=“libpjsip simple.a”
$..…与lipo中的上述内容相同。。。。。。
$exp
--- One Way to build PJSIP libraries --- test with pjsip 2.6
//Updated for XCode 8.
Building PJSIP
$ cd /Users/ravimalviya/Developer/Dev2/trunk
//If you want to specify the minimum supported iOS version
//export MIN_IOS="-miphoneos-version-min=8.0"
Compile Library and Build For Default iPhone 4 use armv7 architecture
$ ./configure-iphone && make dep && make clean && make
Build For iPhone 5, use armv7s architecture
$ ARCH='-arch armv7s' ./configure-iphone && make dep && make clean && make
Build For iPhone 5s, use arm64 architecture
$ ARCH='-arch arm64' ./configure-iphone && make dep && make clean && make
Build For Simulator, use i386 architecture
export DEVPATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer
ARCH="-arch i386" CFLAGS="-O2 -m32 -mios-simulator-version-min=5.0" LDFLAGS="-O2 -m32 -mios-simulator-version-min=5.0" ./configure-iphone
make dep && make clean && make
Build For Simulator, use x86_64 architecture
export DEVPATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer
ARCH="-arch x86_64" CFLAGS="-O2 -m32 -mios-simulator-version-min=5.0" LDFLAGS="-O2 -m32 -mios-simulator-version-min=5.0" ./configure-iphone
make dep && make clean && make
The compilation result
pjlib/lib
pjlib-util/lib
pjmedia/lib
pjsip/lib
pjnath/lib
third_party/lib
Note add into project..
Combine resulting archtecture(arm64,armv7,armv7s,i386, x86_64) supported library .a file.
//goto directory where you collect all build library. create folder name arm64, armv7s, armv7, i386, x86_64 and put all library respectivly. each having only one arch supported library file.
//rename file in all these 5 folders it's a easy way to make universal library.
//Also create folder named unified where all unversal library will create.
$ export LIB_NAME="libg7221codec.a"
$ lipo -arch armv7 armv7/$LIB_NAME -arch armv7s armv7s/$LIB_NAME -arch arm64 arm64/$LIB_NAME -arch i386 i386/$LIB_NAME -arch x86_64 x86_64/$LIB_NAME -create -output unified/$LIB_NAME
//-arch armv7s armv7s/$LIB_NAME means support armv7s get library from directory armv7s/$LIB_NAME and $LIB_NAME file name that only support armv7s.
//-arch arm64 arm64/$LIB_NAME ............
//-arch armv7 armv7/$LIB_NAME ............
//-arch i386 i386/$LIB_NAME ..............
//-arch x86_64 x86_64/$LIB_NAME ..............
//unified/$LIB_NAME is directory where unversal library will build using lips. with same name $LIB_NAME that export. do it same.
//check which arch you lib is supporting
xcrun -sdk iphoneos lipo -info unified/$LIB_NAME
$ export LIB_NAME="libgsmcodec.a"
$ lipo -arch armv7 armv7/$LIB_NAME -arch armv7s armv7s/$LIB_NAME -arch arm64 arm64/$LIB_NAME -arch i386 i386/$LIB_NAME -arch x86_64 x86_64/$LIB_NAME -create -output unified/$LIB_NAME
$ export LIB_NAME="libilbccodec.a"
$ .....same as above in lipo......
$ export LIB_NAME="libpj.a"
$ .....same as above in lipo......
$ export LIB_NAME="libpjlib-util.a"
$ .....same as above in lipo......
$ export LIB_NAME="libpjmedia-audiodev.a"
$ .....same as above in lipo......
$ export LIB_NAME="libpjmedia-codec.a"
$ .....same as above in lipo......
$ export LIB_NAME="libpjmedia-videodev.a"
$ .....same as above in lipo......
$ export LIB_NAME="libpjmedia.a"
$ .....same as above in lipo......
$ export LIB_NAME="libpjnath.a"
$ .....same as above in lipo......
$ export LIB_NAME="libpjsdp.a"
$ .....same as above in lipo......
$ export LIB_NAME="libpjsip-simple.a"
$ .....same as above in lipo......
$ export LIB_NAME="libpjsip-ua.a"
$ .....same as above in lipo......
$ export LIB_NAME="libpjsip.a"
$ .....same as above in lipo......
$ export LIB_NAME="libpjsua.a"
$ .....same as above in lipo......
$ export LIB_NAME="libpjsua.a"
$ .....same as above in lipo......
$ export LIB_NAME="libpjsua2.a"
$ .....same as above in lipo......
$ export LIB_NAME="libresample.a"
$ .....same as above in lipo......
$ export LIB_NAME="libspeex.a"
$ .....same as above in lipo......
$ export LIB_NAME="libsrtp.a"
$ .....same as above in lipo......
$ export LIB_NAME="libyuv.a"
$ lipo -arch armv7 armv7/$LIB_NAME -arch armv7s armv7s/$LIB_NAME -arch arm64 arm64/$LIB_NAME -arch i386 i386/$LIB_NAME -arch x86_64 x86_64/$LIB_NAME -create -output unified/$LIB_NAME
Note: Unversal libraries you can add into your project and also mention in library search path.
//In order to use the pjsip libraries, we need to include folder that ahve header files that access .a files. Naturally, the header files are located in:
pjlib/include
pjlib-util/include
pjmedia/include
pjnath/include
pjsip/include
Note: do't add into project..buz you can not import like import <pjsip-lib/pjsip.h>
so just place these folder into project directory where ever you want but mention in header search path.
Enjoy (:)
#!/bin/bash
ARCHS="armv7 armv7s arm64"
mkdir -p uni
echo "Compiling..."
for arch in $ARCHS
do
echo $arch
echo "=================================="
echo
ARCH="-arch $arch" ./configure-iphone && make dep && make clean && make
echo "Done."
echo
done
RESULT_PATHS="pjlib/lib pjlib-util/lib pjmedia/lib pjsip/lib pjnath/lib third_party/lib"
for path in $RESULT_PATHS
do
echo $path
for file in `ls $path/*-armv7-*`
do
library=`echo $file | sed "s/-armv7-\(.*$\)//g"`
library_tail=`echo $file | sed "s/.*-armv7-//g"`
lipo -arch armv7 $library-armv7-$library_tail -arch armv7s $library-armv7s-$library_tail -arch arm64 $library-arm64-$library_tail -create -output $library.a
cp -vi $library.a uni
done
done