ubuntu PJSIP编译java库及jni生成,开放新jni接口

1、环境搭建参照
http://blog.csdn.net/croop520/article/details/75332990

编译参照
https://trac.pjsip.org/repos/wiki/Getting-Started/Android#OtherAndroidprojects

2、进入pjproject-2.6目录执行以下命令

#NDK目录
export ANDROID_NDK_ROOT=/home/sip/android-ndk-r13b 

#安卓CPU x86  编译器版本4.9 安卓平台5.1
TARGET_ABI=x86 NDK_TOOLCHAIN_VERSION=4.9  APP_PLATFORM=android-22  ./configure-android --use-ndk-cflags 


 make dep && make clean && make

生成jni
进入pjproject-2.6/pjsip-apps/src/swig目录,执行

 $make

生成的东西就在pjproject-2.6/pjsip-apps/src/swig/java中

3、在现有的库中,增加.c和.h
例:新增如下文件
pjproject-2.6\pjsip\src\pjsip\sushj_test1.c
pjproject-2.6\pjsip\include\pjsip\sushj_test1.h
其中.h 为

 #ifndef __SUSHJ_TEST1_H__
#define __SUSHJ_TEST1_H__

#include <pjsip/sip_msg.h>

PJ_BEGIN_DECL

typedef struct sushj_test_struct1
{ 
	pj_str_t		 a;  
	pj_uint32_t		 b;   
	pj_int32_t		 c; 
} sushj_test_struct1;

PJ_DEF(pj_bool_t) sushj_test_copy1(sushj_test_struct1 *dst, sushj_test_struct1 *src);

PJ_END_DECL
#endif	

.c 为
#include <pjsip/sushj_test1.h>

PJ_DEF(pj_bool_t) sushj_test_copy1(sushj_test_struct1 *dst,sushj_test_struct1 *src)
{
	/*pj_strcpy(dst->a, src->a);*/
	dst->b = src->b;
	dst->c = src->c;
	return PJ_TRUE;

}

修改Makefie,增加sushj_test.o目标

 vim pjsip/build/Makefile
# Defines for building PJSIP core library
#
export PJSIP_SRCDIR = ../src/pjsip
export PJSIP_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
                sip_config.o sip_multipart.o \
                sip_errno.o sip_msg.o sip_parser.o sip_tel_uri.o sip_uri.o \
                sip_endpoint.o sip_util.o sip_util_proxy.o \
                sip_resolve.o sip_transport.o sip_transport_loop.o \
                sip_transport_udp.o sip_transport_tcp.o \
                sip_transport_tls.o sip_auth_aka.o sip_auth_client.o \
                sip_auth_msg.o sip_auth_parser.o \
                sip_auth_server.o \
                sip_transaction.o sip_util_statefull.o \
                sip_dialog.o sip_ua_layer.o \
                sushj_test1.o

然后重新生成依赖和编译:
make dep && make

4、开放jni数据类型接口
还是以上面为例,进入pjproject-2.6/pjsip-apps/src/swig
安装python解析器

sudo apt-get -y install python-pycparser

或者直接去下载
https://pypi.python.org/pypi/pycparser/
下载下来,解压后,进入执行

 python setup.py install

因安装pycparser目录与pjsip里写的不一样。修改pjproject-2.6/pjsip-apps/src/swig目录下的importsym.py里的如下目录

 #       PYCPARSER_DIR="/home/bennylp/Desktop/opt/src/pycparser-master"
        PYCPARSER_DIR="/usr/share/python-pycparser/"
		
#if not os.path.exists(PYCPARSER_DIR + '/utils/fake_libc_include'):
if not os.path.exists(PYCPARSER_DIR + '/fake_libc_include'):
		
#	'-I' + PYCPARSER_DIR + '/utils/fake_libc_include',
	'-I' + PYCPARSER_DIR + '/fake_libc_include',

修改swig目录下symbols.lst,增加要开放的结构体

pjsip/sushj_test1.h             sushj_test_struct1

在pjproject-2.6/pjsip-apps/src/swig目录下执行

 make symbols

如果报

 pycparser.plyparser.ParseError: /usr/share/python-pycparser//fake_libc_include/_fake_typedefs.h:96:9: Invalid declaration
Makefile:35: recipe for target 'symbol' failed

找到pycparser中的_fake_typedefs.h对应的行,注释掉报错行,重新make。

/*typedef int jmp_buf;*/

5、开放函数接口
swig目录的pjsua2.i结尾增加:

pj_bool_t sushj_test_copy1(sushj_test_struct1 *dst, sushj_test_struct1 *src);

重新make就好了。

您的支持,是我持续创作的动力!!!!
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Linux PJ-SIP是一个开源的软电话/ VoIP,它可以用于开发基于SIP协议的通信应用程序。编译PJ-SIP时,您可以按照以下步骤进行操作: 1. 下载PJ-SIP:您可以从PJ-SIP官方网站(http://www.pjsip.org)下载最版本的PJ-SIP。解压缩下载的文件。 2. 安装依赖项:在编译PJ-SIP之前,您需要安装一些依赖项。以Ubuntu为例,您可以使用以下命令安装依赖项: ``` sudo apt-get install build-essential python-dev libssl-dev libncurses5-dev libxml2-dev libjansson-dev ``` 3. 配置编译参数:进入PJ-SIP的目录,并使用以下命令生成编译配置文件: ``` cd <pj-sip-directory> ./configure --enable-shared --disable-sound --disable-video --disable-opencore-amr --disable-resample ``` 4. 编译和安装:使用以下命令进行编译和安装: ``` make dep make sudo make install ``` 5. 测试安装:编译完成后,您可以使用示例应用程序进行测试。进入PJ-SIP的pjsip-apps/bin目录,运行以下命令启动一个测试客户端: ``` ./pjsua-x86_64-unknown-linux-gnu ``` 以上是简要的步骤,用于在Linux上编译PJ-SIP。请注意,具体的编译过程可能会根据您的操作系统和环境而有所不同。在执行编译过程时,请确保您的系统满足所有依赖项,并仔细阅读PJ-SIP的官方文档,以获取更多详细信息。 ### 回答2: Linux平台上编译PJSIP的步骤如下: 1. 首先,确保你的Linux操作系统已经安装了必要的编译工具,如gcc、g++等。你可以通过在终端中输入以下命令来检查它们是否已安装: ``` gcc --version g++ --version ``` 2. 下载PJSIP源代码。你可以从PJSIP的官方网站上下载最的稳定版本或开发版本。使用wget命令来下载: ``` wget http://www.pjsip.org/release/2.10/pjproject-2.10.tar.bz2 ``` 3. 解压源代码包。使用以下命令来解压下载的源代码包: ``` tar -xvjf pjproject-2.10.tar.bz2 ``` 4. 进入解压后的目录: ``` cd pjproject-2.10 ``` 5. 配置编译选项。运行以下命令来生成编译配置文件: ``` ./configure ``` 6. 编译源代码。使用make命令来编译源代码。这个过程可能需要一些时间: ``` make ``` 7. 安装编译好的文件。使用以下命令将编译好的文件安装到系统中: ``` sudo make install ``` 8. 编译PJSUA示例程序。运行以下命令来编译PJSUA示例程序: ``` cd pjsip-apps/src/ make pjsua ``` 9. 编译和运行其他需要的示例程序。你可以使用类似的命令来编译和运行其他示例程序,如PJSUA2、PJSIP测试套件等。 这些步骤将会在Linux平台上编译PJSIP生成所需的文件和示例程序。你可以根据自己的需求进行特定的配置和编译选项。希望以上的解答能够对你有所帮助。 ### 回答3: 要编译Linux下的PJSIP,你需要按照以下步骤进行操作: 1. 下载PJSIP软件包:可以从PJSIP官方网站上下载最的软件包,也可以使用命令行工具如wget进行下载。 2. 解压软件包:使用解压缩工具如tar解压下载的PJSIP软件包。进入解压后的目录。 3. 设置编译环境:在终端中输入"./configure" 命令,这会自动检测系统环境并生成相应的Makefile。 4. 进行编译:在终端中输入"make" 命令进行编译。这会执行Makefile文件中的编译规则,然后将生成的可执行文件和文件拷贝到指定目录。 5. 安装PJSIP:在终端中输入"sudo make install" 命令,这会将编译生成的文件安装到系统目录中。 6. 配置PJSIP:在PJSIP安装目录下的"pjsua" 子目录中,可以找到一个名为"pjsua.conf" 的配置文件。你可以根据自己的需求修改该文件,配置PJSIP的各项参数。 7. 测试PJSIP:使用终端中的"pjsua" 命令启动PJSUA应用程序,并通过命令行进行测试。 编译PJSIP可能会因为环境配置不正确或者依赖包缺失而出现错误。如果遇到错误,可以根据错误提示进行解决,可能需要安装一些依赖包或者调整系统环境配置。 值得提醒的是,这只是一个简单的介绍,具体的编译步骤可能因为系统环境的不同而有所差异。因此,在进行PJSIP编译之前,建议先阅读官方文档或者相关教程,以便正确地进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值