jrtplib linux编译,jrtplib+jthread 交叉编译
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 交叉编译相关推荐
- jrtplib+jthread 交叉编译
一.移植JRTPLib到嵌入式(arm)平台 JRTPLIB库是一个RTP协议的开源库,使用这套库文件,我们可以创建端到端的RTP连接,实现数据的实时传输. JRTPLIB是使用标准c++编写的. ...
- 编译jrtplib和jthread
最近要做网络监控视频的传输,以前就接触过图像处理的基本东西,对于网络稍微了解一点,对于视频的编解码则是一窍不通.这两周查阅了不少资料,发现一般使 用的网路协议都是RTP/RTCP,网络上找了不少资料, ...
- 国标28181:jrtplib从编译到使用
jrtplib 作用 jrtplib是一个基于C++编写的面向对象的库,旨在帮助开发人员使用RFC3550中描述的实时传输协议(RTP),目前已经可以运行在Windows.Linux.FreeBSD. ...
- JRtplib开发笔记(二):JRtplib库编译、示例演示
原博主博客地址:https://blog.csdn.net/qq21497936 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/84 ...
- 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 ...
- linux 上编译arm64,Arch Linux 搭建 arm64/AArch64 交叉编译环境
Arch Linux 搭建 arm64/AArch64 交叉编译环境 0. 系统环境 系统: Arch Linux: 成文时间最新 工具版本:Binutils:2.34-1 GCC:9.2.1+202 ...
- linux 编译c_含有CGO代码的项目如何实现跨平台编译
目前小菜刀的项目中需要用到SQLite数据库,https://github.com/mattn/go-sqlite3支持database/sql接口,采用Go的标准接口有利于项目后续扩展,因此选择了该 ...
- 交叉编译php-5.6.30,linux下用arm-none-linux-gnueabi交叉编译arm内核模块
前不久导师要求交叉编译一个基于arm平台开发的内核模块来练手,在网上查了很多资料才弄出来,于是将这些零散的信息综合起来给和我一样的入门人员了解.水平有限,请谅解~ 1.安装arm-none-linux ...
- linux 交叉编译 静态库,从Linux为Windows开发交叉编译静态库
我想在Linux中为Windows编译静态库.以下是我跟着编译从Linux为Windows开发交叉编译静态库 使用i586-mingw32msvc-cc -c static_lib.c -o stat ...
- Linux下搭建Android交叉编译环境
前言 为了能够在Android平台上使用一些Linux中的C/C++库,我们需要使用AndroidNDK来编译那些Linux库的源代码,使用NDK开发时,通常使用Android.mk或者Cmake来构 ...
最新文章
- 深度神经网络中的Inception模块介绍
- FastDFS图片服务器
- 相关滤波跟踪(MOSSE)
- boost::phoenix::bind相关的测试程序
- python机器学习入门(Day1:Numpy)
- 递归算法,JavaScript实现
- 【技术分享】几维安全CTO刘柏江:IoT时代LLVM编译器防护的艺术
- 正则表达式之语法规则
- 这个严重的无补丁 UPnP 漏洞影响几乎所有的IoT设备:绕过安全系统、扫描LANs
- python代替shell脚本_自动化shell脚本except与python的pexpect模块
- springboot微信小程序 获取微信unionid
- TCP/IP框架总结
- 【演讲实录+PPT下载】一网打尽AI年度热点,2017中国人工智能大会资料曝光(持续更新)...
- 搜索引擎优化的九大方法
- java怎么下载我的世界手机版_我的世界JAVA版手机版
- 互金累计融资近千例 借贷行业融资数量居首位
- STC学习:可校准的实时时钟
- 一个硬盘的感人爱情故事
- ubuntu下查看电脑系统信息
- 用win系统PC或笔记本作为Mac的扩展屏
热门文章
- eeglab和matlab,EEGLAB for Matlab(一)--初识EEGLAB
- python手动垃圾回收_Python3学习笔记,F,垃圾,回收
- 联发科MT6763处理器参数MT6763处理器芯片资料下载
- 2021年5月CCAA注册审核员考试认证通用基础真题
- php中文九九乘法表,PHP输出九九乘法表代码实例
- 人工智能--状态空间问题求解方法
- ios 录音后播放声音变小的解决方法
- 【ZBrush笔刷】实用笔刷和Alpah下载,及笔刷使用方法
- vue 回到顶部简单动画效果
- mysql按逗号拼接起来_MySql逗号拼接字符串查询的两种方法