JRTPLIB库是一个RTP协议的开源库,使用这套库文件,我们可以创建端到端的RTP连接,实现数据的实时传输。

JRTPLIB是使用标准c++编写的.

tar -jxvf jrtplib-3.7.1.tar.bz2

tar -zxvf jthread-1.2.1.tar.gz

解压后在当前文件夹下会生成rtplib-3.7.1,jthread-1.2.1两个目录。

安装jthread

采用默认的安装路径,安装结束后将回在/usr/local/include  /usr/local/lib下生成相应的头文件与库。此外,还需要指定编译环境,将Host设置为arm -linux,CC设定为交叉编译器的路径,具体设置方法可以在终端中输入./configure –help查看。

进入解压文件目录:

cd  jthread-1.2.1

在终端中输入:

./configure -host=arm-linux CC=arm-linux-gcc CXX=arm-linux-g++

将生成一个Makefile文件。

执行

make

make install

jthread安装完毕。

安装JRtpLib

和安装JThread类似

进入解压后目录

cd   rtplib-3.7.1

执行配置文件

./configure -host=arm-linux CC=arm-linux-gcc CXX=arm-linux-g++

编译:

第一种:

1. 遇到了第一个棘手的问题,提示can't retrieve login name,建立不了rtpsession。在rtpsession.cpp中。

后来发现是RTPSession::CreateCNAME这个函数搞得鬼

这个函数会从系统调用里获取loginname,但是一般的板子由于内核和文件系统的原因都没有loginname,所以

if (!gotlogin)

{

char *logname = getenv("LOGNAME");

if (logname == 0)

return ERR_RTP_SESSION_CANTGETLOGINNAME;//这里return了一个error

strncpy((char *)buffer,logname,*bufferlength);

}

所以我强制将logname的值设为root,就ok了。

2、有些人会遇到arm和pc无法互相接受数据包的问题,但是pc和pc,arm和arm就可以收到。我用sniffer抓了一下包发现确实是有数据包的,所以应该不是程序的问题。这个问题上网查了一下,也没人说的明白,只有一个高人点了一下,可能是字节序和位域的问题。自己又研究了一下,也是一知半解。

一般x86的pc机是用小端字节序(little endian),而嵌入式平台一般是大端字节序(big endian),可能是由于字节序的不同,导致了明明存在数据包,却认不出来的问题

解决方法:在jrtplib3/src/rtpconfig_unix.h 中注销掉大端模式

//#define RTP_BIG_ENDIAN // comment this if the target is a little endian system

//#define RTP_SUPPORT_THREAD

添加线程后编译不通过,所以一起把线程宏定义注销掉

第二种

gedit src/rtperrors.h

添加  #include gedit src/rtpconfig_unix.h

注释掉 //#define RTP_BIG_ENDIAN // comment this if the target is a little endian system

gedit src/rtpsession.cpp

if (!gotlogin)

{

char *logname = getenv("LOGNAME");

char myname[] = {'R','u','n','S','h','e','n','g','\0'};

logname = myname;                if (logname == 0)  //处理返回错误

return ERR_RTP_SESSION_CANTGETLOGINNAME;

strncpy((char *)buffer,logname,*bufferlength);

}

gedit examples/Makefile  //处理链接库

INCLUDES = -I /usr/local/include/jthread -I ../src/

LDADD = ../src/.libs/libjrtp.a-L/usr/local/lib/ -ljthread -lpthread

make

make install

完成后,可以看到/usr/local/lib目录下多了JThread和JRtpLib的库文件:

参考以下两篇:

jrtplib linux编译,jrtplib+jthread 交叉编译相关推荐

  1. jrtplib+jthread 交叉编译

      一.移植JRTPLib到嵌入式(arm)平台 JRTPLIB库是一个RTP协议的开源库,使用这套库文件,我们可以创建端到端的RTP连接,实现数据的实时传输. JRTPLIB是使用标准c++编写的. ...

  2. 编译jrtplib和jthread

    最近要做网络监控视频的传输,以前就接触过图像处理的基本东西,对于网络稍微了解一点,对于视频的编解码则是一窍不通.这两周查阅了不少资料,发现一般使 用的网路协议都是RTP/RTCP,网络上找了不少资料, ...

  3. 国标28181:jrtplib从编译到使用

    jrtplib 作用 jrtplib是一个基于C++编写的面向对象的库,旨在帮助开发人员使用RFC3550中描述的实时传输协议(RTP),目前已经可以运行在Windows.Linux.FreeBSD. ...

  4. JRtplib开发笔记(二):JRtplib库编译、示例演示

    原博主博客地址:https://blog.csdn.net/qq21497936 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/84 ...

  5. Windows 7(Win7)下Visual Studio 2012(VS2012)编译jrtplib与MinGW编译jrtplib

    一.下载jrtplib.jthread.CMake.Visual Studio 2012和Qt5.5.1 jrtplib:http://research.edm.uhasselt.be/jori/jr ...

  6. linux 上编译arm64,Arch Linux 搭建 arm64/AArch64 交叉编译环境

    Arch Linux 搭建 arm64/AArch64 交叉编译环境 0. 系统环境 系统: Arch Linux: 成文时间最新 工具版本:Binutils:2.34-1 GCC:9.2.1+202 ...

  7. linux 编译c_含有CGO代码的项目如何实现跨平台编译

    目前小菜刀的项目中需要用到SQLite数据库,https://github.com/mattn/go-sqlite3支持database/sql接口,采用Go的标准接口有利于项目后续扩展,因此选择了该 ...

  8. 交叉编译php-5.6.30,linux下用arm-none-linux-gnueabi交叉编译arm内核模块

    前不久导师要求交叉编译一个基于arm平台开发的内核模块来练手,在网上查了很多资料才弄出来,于是将这些零散的信息综合起来给和我一样的入门人员了解.水平有限,请谅解~ 1.安装arm-none-linux ...

  9. linux 交叉编译 静态库,从Linux为Windows开发交叉编译静态库

    我想在Linux中为Windows编译静态库.以下是我跟着编译从Linux为Windows开发交叉编译静态库 使用i586-mingw32msvc-cc -c static_lib.c -o stat ...

  10. Linux下搭建Android交叉编译环境

    前言 为了能够在Android平台上使用一些Linux中的C/C++库,我们需要使用AndroidNDK来编译那些Linux库的源代码,使用NDK开发时,通常使用Android.mk或者Cmake来构 ...

最新文章

  1. 深度神经网络中的Inception模块介绍
  2. FastDFS图片服务器
  3. 相关滤波跟踪(MOSSE)
  4. boost::phoenix::bind相关的测试程序
  5. python机器学习入门(Day1:Numpy)
  6. 递归算法,JavaScript实现
  7. 【技术分享】几维安全CTO刘柏江:IoT时代LLVM编译器防护的艺术
  8. 正则表达式之语法规则
  9. 这个严重的无补丁 UPnP 漏洞影响几乎所有的IoT设备:绕过安全系统、扫描LANs
  10. python代替shell脚本_自动化shell脚本except与python的pexpect模块
  11. springboot微信小程序 获取微信unionid
  12. TCP/IP框架总结
  13. 【演讲实录+PPT下载】一网打尽AI年度热点,2017中国人工智能大会资料曝光(持续更新)...
  14. 搜索引擎优化的九大方法
  15. java怎么下载我的世界手机版_我的世界JAVA版手机版
  16. 互金累计融资近千例 借贷行业融资数量居首位
  17. STC学习:可校准的实时时钟
  18. 一个硬盘的感人爱情故事
  19. ubuntu下查看电脑系统信息
  20. 用win系统PC或笔记本作为Mac的扩展屏

热门文章

  1. eeglab和matlab,EEGLAB for Matlab(一)--初识EEGLAB
  2. python手动垃圾回收_Python3学习笔记,F,垃圾,回收
  3. 联发科MT6763处理器参数MT6763处理器芯片资料下载
  4. 2021年5月CCAA注册审核员考试认证通用基础真题
  5. php中文九九乘法表,PHP输出九九乘法表代码实例
  6. 人工智能--状态空间问题求解方法
  7. ios 录音后播放声音变小的解决方法
  8. 【ZBrush笔刷】实用笔刷和Alpah下载,及笔刷使用方法
  9. vue 回到顶部简单动画效果
  10. mysql按逗号拼接起来_MySql逗号拼接字符串查询的两种方法