为所有体系结构编译PJSIP 2.5库

时间:2016-06-23 05:10:35

标签: 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,我可以使用哪个命令或工具

6 个答案:

答案 0 :(得分:4)

10.7
10.
10
???? what should the field contain 

答案 1 :(得分:2)

为所有设备编译的步骤。

  1. 分别为所有设备编译
  2. 与lipo合并
  3. 例如。

    -create /libsrtp-arm64-apple-darwin_ios.a /libsrtp-i386-apple-darwin_ios.a -output output_file_name

    然后使用output_file_name.a作为所有设备和模拟器的通用库

    检查支持的架构:output_file_name.a

    lipo -info name_of_static_lib

    output : /libsrtp-universal-apple-darwin_ios.a are: armv7 armv7s i386 x86_64 arm64

    Compile PJSIP 2.5 Library for all archietectures

    由于

答案 2 :(得分:1)

我们写了一个cocoapod,它将创建一个可以包含在项目中的静态库。目前,您只能在Objective C cocoapod环境中使用它。我们正在开发一个版本,它将创建一个动态库,以便它可以与Swift一起使用。

请查看:

https://github.com/VoIPGRID/Vialer-pjsip-iOS

我们制作了一个开源包装器,可以更轻松地将PJSIP集成到您的iOS项目中:

https://github.com/VoIPGRID/VialerSIPLib

答案 3 :(得分:0)

enter image description here

像发布的那样合并

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.a / My \ Project / pjsip -universal / armv7 / libgsmcodec-armv7-apple-darwin_ios.a / My \ Project / pjsip-universal / arm64 / libgsmcodec-arm64-apple-darwin_ios.a -output / My \ Project / pjsip-universal / universal / libgsmcodec-universal-apple-darwin_ios.a

最后测试它

lipo -info / My \ Project / pjsip-universal / libgsmcodec-universal-apple-darwin_ios.a

输出: 胖文件中的体系结构:/ My Project / pjsip-universal / libgsmcodec-universal-apple-darwin_ios.a是: i386 armv7s armv7 x86_64 arm64

生成通用架构后:

点击此链接,在链接

中的此行添加项目

将标题文件添加到项目中

how to add in project

希望这会对你有所帮助。

答案 4 :(得分:0)

你可以在GitHub上查看this项目,它的作者在为所有架构构建pjsip方面做得很好,他甚至提供了podspec以便于CocoaPods的集成。

答案 5 :(得分:0)

我正在使用这个脚本为我的archs构建pjsip。

我在 pjsip 根文件夹中运行它,它会创建一个 uni 文件夹,其中包含我随后链接/添加到的结果库我的项目。

#!/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