jrtplib 3.9.1 arm 交叉编译

来源:互联网 发布:ds数据精灵使用教程 编辑:程序博客网 时间:2024/05/20 23:03

目前jrtplib的版本已经更新到了3.9.1,现在用的自动编译脚本已经被作者改成了cmake。由于最近需要在armv5的板子下开发视频应用,因此准备把该库移植过去。转载请注明作者:jwybobo2007。移植前先在baidu和google上搜索了下,没有找到有关jrtplib 3.9.1的交叉编译方法,能找到的就是3.7.1版本的编译方式,那时候直接是用的configure,make来编译的。既然没找到,那就只能自己研究一下,然后动手编译(现在的人真的是很依赖搜索引擎了,就像我,凡事都先搜索,找不到答案时,才自己去动脑研究,真是悲剧啊),下面介绍一下几个步骤。

  1.下载该库以及jthread后,分别解压,在解压目录中能看到一个CMakeList.txt的文件

  2.修改两个解压目录下的CMakeList.txt 

[cpp] view plaincopy
  1. #告知当前使用的是交叉编译方式  
  2. SET(CMAKE_SYSTEM_NAME Linux)  
  3. #设置c编译器  
  4. SET(CMAKE_C_COMPILER "arm-none-linux-gnueabi-gcc")  
  5. #设置c++编译器  
  6. SET(CMAKE_CXX_COMPILER "arm-none-linux-gnueabi-g++")  
  3.切换目录至jthread解压目录,执行cmake CMakeList.txt

  4.make, make install  此时jthread库安装完毕,默认安装到/usr/local

接下来编译jrtplib

  5.切换目录至jrtplib解压目录,执行cmake CMakeList.txt

  6.执行完后,根据大小端情况先修改src文件夹下的rtpconfig.h

  默认情况下会定义大端宏:

[cpp] view plaincopy
  1. #define RTP_BIG_ENDIAN  

  如果用的是小端序,把这个宏屏蔽掉

  7.由于板子上的linux操作系统可以在没有用户名的情况下登录,所以rtpsession.cpp中的CreateCNAME可能报Can't retrieve login name的错误,因此需要修改几句代码:

[cpp] view plaincopy
  1. if (!gotlogin)  
  2. {  
  3.     char *logname = getenv("LOGNAME");  
  4.     if (logname == 0)  
  5.     {  
  6.         strncpy((char*)buffer, "root", *bufferlength);  
  7.     }  
  8.     else  
  9.         strncpy((char *)buffer,logname,*bufferlength);  
  10. }  

  8.make, make install

  执行成功后就OK了,现在可以写代码测试了