PJSIP2.5.1编译

此文记录pjsip编译过程中遇到的一些问题以及解决方法。

首先参考一下www.pjsip.org官网的Getting Started基础


一、MAC下编译


主要为IPHONE进行编译,包括模拟器版本和真机版本,baidu出来按如下网址进行:

http://www.tuicool.com/articles/Z7VjMn,里面的脚本整的不错,比较方便

这里写了i386,armv7,armv7s,arm64的编译,但是无x86_64版本

编译x86_64版本

$ export DEVPATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer
$ ARCH="-arch x86_64" CFLAGS="-O2 -m64 -mios-simulator-version-min=5.0" LDFLAGS="-O2 -m64 -mios-simulator-version-min=5.0" ./configure-iphone
$ make dep && make clean && make
其他相同。

在2.6版本里生成的文件名和2.5不同,故里面的合并脚本需要修改,需要将每个arch版本生产的库文件统一改名成一样的名称


二、linux编译


问题1:ALSA的支持,无ALSA,confiure是检测不到,编译找不到ALSA的头文件

解答1:由于只需要做服务器端代理,不需要声卡支持,在config_site.h中加上#define PJMEDIA_AUDIO_DEV_HAS_ALSA   0


三、windows编译


问题1:srtp.h中找不到stdint.h

解答1:

#ifdef _MSC_VER  
typedef __int32 int32_t; 
typedef unsigned __int32 uint32_t; 
typedef __int64 int64_t; 
typedef unsigned __int64 uint64_t;  
#else 
#include <stdint.h> 
#endif 

问题2:call.cpp中

MathStat::MathStat()
: n(0), max(0),min(0),last(0), mean(0)
{
}

error:大致是说把max当成宏了,syntax error

解答2:

MathStat::MathStat()
: n(0), last(0), mean(0)
{
max = 0;
min = 0;
}


四、ipv6的支持

2.5.5以后支持ipv6,我现在用了2.6,2.6编译生成的文件名称和2.5略有不同

1、https://trac.pjsip.org/repos/wiki/IPv6#IPv6Supportinpjsip

#define PJ_HAS_IPV6 1

tp_type = PJSIP_TRANSPORT_TCP6;
status = pjsua_transport_create(tp_type, &tp_cfg, &udp6_tp_id);
if (status != PJ_SUCCESS)
acc_cfg.transport_id = udp6_tp_id; 

2、http://www.cnblogs.com/HemJohn/p/5590483.html

getaddrinfo获取到本地地址,判断是否是ipv6格式,即":"分隔的为v6网络

编译PJSIP Android版本,你需要按照以下步骤进行操作: 1. 首先,你需要设置你的编译环境。根据引用和引用,你需要安装Ubuntu 14.04和Android NDK(如android-ndk-r9d-linux-x86_64或android-ndk-r13b)。确保你已经安装了SWIG 2.0.5以上的版本。 2. 接下来,你需要下载PJSIP源代码。根据引用,你可以从官方网站上下载最新版本的源代码。解压缩源代码文件。 3. 修改配置文件。根据引用和引用,你需要在配置文件(config_site.h)中添加一些内容,例如#define PJ_CONFIG_ANDROID 1,如果你需要视频功能,还需要添加#define PJMEDIA_HAS_VIDEO 1。 4. 设置NDK环境变量。根据引用和引用,你需要设置ANDROID_NDK_ROOT环境变量,指向Android NDK的安装路径。 5. 配置PJSIP。根据引用,你可以运行./configure-android命令进行配置。如果你需要视频功能,可以使用./configure-android --with-openh264=/path/to/openh264进行配置,其中/path/to/openh264是你编译openh264成功后生成的androidlib目录的路径。 6. 编译PJSIP。根据引用和引用,运行make dep && make clean && make命令进行编译。静态库和动态库将会在编译完成后生成。 7. 编译Java接口文件。根据引用,进入pjsip-apps/src/swig目录,运行make命令编译Java接口文件。 8. 最后,你可以使用生成的libpjsua2.so和相关的Java文件进行apk开发。根据引用,libpjsua2.so将会被生成在pjsip-apps/src/swig/java/android/app/src/main/jniLibs目录下,Java文件将会生成在pjsip-apps/src/swig/java/android/app/src/main目录下。 请注意,编译过程可能会因为不同环境和版本的差异而有所不同,如果遇到问题,可以参考官方文档或社区的帮助资源。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [pjsip for Android的编译](https://blog.csdn.net/u012247418/article/details/80161658)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Android 编译PjSip](https://blog.csdn.net/ou_yb2006/article/details/89354643)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [PJSIP-Android-Compilation:PJSIP-Android平台编译后的Hello World](https://download.csdn.net/download/weixin_42138139/19728536)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值