JRTPLIB库arm交叉编译详解

来源:互联网 发布:树莓派部署python环境 编辑:程序博客网 时间:2024/06/06 17:22

系统平台:Ubuntu  16.04 

开发板:gec6818  ARM

jrtplib库:libjrtp.so.3.11.1.tar.gz

jthread版本:libjthread.so.1.3.3.tar.gz

http://research.edm.uhasselt.be/jori/page/CS/Jrtplib.html

本交叉编译是将RTP接收端放在ARM开发板上运行,RTP发送端在Ubuntu系统上运行。(由于发送端和接收端各自的运行环境不一样,所以,需要编译两次jrtplib库和jthread库)

接收端:交叉编译jrtplib和jthread库

具体步骤:

(1)下载好jrtplib和jthread的两个压缩包,并将它们放到Ubuntu系统上解压,楼主在根目录下新建的JRTLIB目录,将两个压缩包都放到本目录下解压的。(注意:在这里不要将自己的压缩包放在共享目录下解压,否则解压jthread库会出现错误)

(2)先解压jthread库,查看自己系统上是否装有cmake工具,若没有,则apt-get install  cmake,安装好cmake工具。

(3)进入解压好的jthread-1.3.3目录中,查看CMakeLists.txt文件。

(4)在CMakeLists.txt文件首行加入下面几句话:

#告知当前使用的是交叉编译方式  

SET(CMAKE_SYSTEM_NAME Linux)  

#设置c编译器  

SET(CMAKE_C_COMPILER "arm-linux-gcc")  

#设置c++编译器  

SET(CMAKE_CXX_COMPILER "arm-linux-g++")

(5)执行cmake   CMakeLists.txt(执行完以后,会出现Makefile )

(6)执行make

(7)make  install

(8)然后进入jrtplib-3.11.1目录下,同样执行第4步到7步的方法。

(9)进入编译好的头文件路径中,/usr/local/include,会看到有jrtplib3、jthread两个目录文件。

(10)然后进入jrtplib3目录中,找到rtpconfig.h头文件,将头文件中的#define RTP_BIG_ENDIAN(切记要屏蔽掉),因为这一点啃了我一半天的时间;由于pc机和ARM开发板的

端结构不同,导致我用PC给ARM板发送数据,ARM端不能接收到数据,但是程序能运行。(开发板芯片是小端结构,所以要屏蔽掉PC端使用的大端结构宏定义)

(11)这时候编译自己的RTP接收端程序,可能会出现缺少头文件的错误。

解决方法:(1)进入/usr/local/include中将jrtplib3、jthread两个目录文件,直接拷贝到你自己使用的交叉编译工具的头文件目录下,LZ使用的是arm-linux-4.5.1的交叉编译工具(/usr/local/4.5.1/arm-none-linux-gnueabi/include);如果还提示没有头文件,就注意要在你的RTP接收程序的头文件里改路径,例如:#include "jrtplib3/rtpsession.h"。

若还提示没有头文件,就将jrtplib3、jthread两个目录文件,再复制一份到/usr/include 目录下面。

(12)这时候还没有结束,马上又会提醒你缺少库文件。

解决方法:(1)进入/usr/local/lib中将libjrtp.so、libjrtp.so.3.11.1 、libjthread.so、libjthread.so.1.3.3各复制一份到/usr/local/4.5.1/arm-none-linux-gnueabi/lib中。

ok!接收端大功告成。


PC发送端:普通编译jrtplib和jthread库

(1)LZ建议最好将之前已经生成的jrtplib3、jthread两个目录文件,删除了;重新解压,重新得到jrtplib3、jthread这两个目录文件。

(2)然后直接执行接收端的第5步到第7步。(不需要第4步,也不需要再去屏蔽大端结构宏定义了,因为是在电脑上运行)

(3)后面的步骤基本上和接收端,后面的步骤一样,记住哪里缺少头文件和库文件,就向相应的地方添加头文件和库文件。


RTP实时传输代码,后续更新。





原创粉丝点击