交叉编译jrtplib3.9.1详解
来源:互联网 发布:p6软件 编辑:程序博客网 时间:2024/06/05 18:42
一.关于Linux pc端编译参考博客:http://blog.csdn.net/zhangjikuan/article/details/27974733
二.交叉编译
1.先编译jthread
修改CMakeLists.txt
在文件中set(VERSION 1.3.1)行的下面添加以下代码
#add by zjk
set (CMAKE_SYSTEM_NAME Linux) 设置目标系统,随便设置
set (CMAKE_C_COMPILER "arm-linux-gcc") 设置C编译工具,C交叉编译器
set (CMAKE_CXX_COMPILER "arm-linux-g++") 设置C++编译工具,C++编译器
#end
保存后 cmake CMakeLists.txt
make
make install
这样jthread的头文件和库文件就分别在/usr/local/include 和/usr/local/lib 目录下了
2.编译jrtplib3.9.1
与jthread一样修改CMakeLists.txt文件,修改内容一样
进入jrtplib3.9.1目录运行 cmake CMakeList.txt
由于开发板上的芯片是小端结构的,所以执行完cmake CMakeList.txt后,要根据大小端情况先修改src文件夹下 的rtpconfig.h,把 #define RTP_BIG_ENDIAN 这句话注释掉。(我的就没有这句话,所以没注释)
这是网上的注意事项:注意:在执行cmake CMakeList.txt前是没有这 句话的,今天在这里卡了很久)第一次实现的时候有收到开发板发来的数据, 但是vlc就是播放不了,经过抓包对比才找到原因,正常RTP头前两个字节是(80 E0 ),而开发板发来的数据RTP头前两个字节是(02C1 ),这才焕然大悟是大小端的问题。
.由于板子上的linux操作系统可以在没有用户名的情况下登录,所以rtpsession.cpp中的CreateCNAME可能报Can't retrieve login name的错误,因此需要修改几句代码:
在int RTPSession::CreateCNAME(uint8_t *buffer,size_t *bufferlength,bool resolve)中修改两行代码
if (!gotlogin) // try regular getlogin
{
char *loginname = getlogin();
if (loginname == 0)
//gotlogin = false; 屏蔽掉
strncpy((char *)buffer,"root",*bufferlength); 强制为root
else
strncpy((char *)buffer,loginname,*bufferlength);
}
运行 make
make install
这样jrtplib的头文件和库文件就分别在/usr/local/include 和/usr/local/lib 目录下了
至于该把这些头文件放到哪个目录下请参考PC编译的博客http://blog.csdn.net/zhangjikuan/article/details/27974733
与PC不同的是可能交叉编译的头文件和库文件搜索位置不一样,参考博客:http://blog.csdn.net/zhangjikuan/article/details/31417649
关于其他可能遇到的问题参考:http://blog.csdn.net/zhangjikuan/article/details/31741803
- 交叉编译jrtplib3.9.1详解
- 交叉编译jrtplib3.9.1详解
- jrtplib3.9.1交叉编译
- Jrtplib3.9.1交叉编译
- Jthread1.3.1 Jrtplib3.9.1跨平台交叉编译之Android(一)
- Jthread1.3.1 Jrtplib3.9.1跨平台交叉编译之Android(二)
- jrtplib - RTP开源协议库JRTPLIB3.9.1编译
- 交叉编译详解
- 交叉编译详解
- arm交叉编译详解
- arm交叉编译详解
- jrtplib3.7.1编译调试心得体会
- jrtplib3.9.1 example1
- jrtplib3.9.1 example2
- jrtplib3.9.1 example3
- jrtplib3.9.1 example4
- jrtplib3.9.1 example5
- Qtopia2交叉编译过程详解
- MySQL在大型网站的应用架构演变
- sublime text 编译时提示[WinError 2] 系统找不到指定的文件。
- 剪图神器官网
- DAL(4)
- Oracle数据库备份与恢复特性浅谈
- 交叉编译jrtplib3.9.1详解
- Push or Pull
- libsigc++-1.2.5库的使用
- Localhost ,127.0.0.1 和 计算机 IP地址
- nutch安装与测试
- iOS 多线程 锁 互斥 同步
- SQL SERVER分区表探寻(二)
- 画刷和歌词播放效果+变换和投射
- 关于"failed to report status for 600 seconds. killing"的错误