本文主要是介绍【RTP】jrtplib 3.9.1 arm 交叉编译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目前jrtplib的版本已经更新到了3.9.1,现在用的自动编译脚本已经被作者改成了cmake。由于最近需要在armv5的板子下开发视频应用,因此准备把该库移植过去。转载请注明作者:jwybobo2007。移植前先在baidu和google上搜索了下,没有找到有关jrtplib 3.9.1的交叉编译方法,能找到的就是3.7.1版本的编译方式,那时候直接是用的configure,make来编译的。既然没找到,那就只能自己研究一下,然后动手编译(现在的人真的是很依赖搜索引擎了,就像我,凡事都先搜索,找不到答案时,才自己去动脑研究,真是悲剧啊),下面介绍一下几个步骤。1.下载该库以及jthread后,分别解压,在解压目录中能看到一个CMakeList.txt的文件
2.安装cmake ,g++
3.运行 cmake . (不要忘记这个点 "." )生成CMakeCache.txt
4.将里面的/usr/bin/c++ 替换成 /root/CodeSourcery/Sourcery_G++_Lite/bin/c++
/usr/bin/gcc 替换成 /root/CodeSourcery/Sourcery_G++_Lite/bin/gcc
5. 然后make 生成的 为arm-linux 平台下的jrtplib库
以下内容摘抄自网络:
- #告知当前使用的是交叉编译方式
- SET(CMAKE_SYSTEM_NAME Linux)
- #设置c编译器
- SET(CMAKE_C_COMPILER "arm-none-linux-gnueabi-gcc")
- #设置c++编译器
- SET(CMAKE_CXX_COMPILER "arm-none-linux-gnueabi-g++")
4.make, make install 此时jthread库安装完毕,默认安装到/usr/local下
接下来编译jrtplib
5.切换目录至jrtplib解压目录,执行cmake CMakeList.txt
6.执行完后,根据大小端情况先修改src文件夹下的rtpconfig.h
默认情况下会定义大端宏:
- #define RTP_BIG_ENDIAN
如果用的是小端序,把这个宏屏蔽掉
7.由于板子上的linux操作系统可以在没有用户名的情况下登录,所以rtpsession.cpp中的CreateCNAME可能报Can't retrieve login name的错误,因此需要修改几句代码:
- if (!gotlogin)
- {
- char *logname = getenv("LOGNAME");
- if (logname == 0)
- {
- strncpy((char*)buffer, "root", *bufferlength);
- }
- else
- strncpy((char *)buffer,logname,*bufferlength);
- }
8.make, make install
执行成功后就OK了,现在可以写代码测试了
这篇关于【RTP】jrtplib 3.9.1 arm 交叉编译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!