JRTPLIB库在Linux平台上的编译
1、jrtplib简介
RTP 是目前解决流媒体实时传输问题的最好办法,要在 Linux 平台上进行实时传送编程,可以考虑使用一些开放源代码的 RTP 库,如 LIBRTP、JRTPLIB 等。JRTPLIB 是一个面向对象的 RTP 库,它完全遵循 RFC1889设计,在很多场合下是一个非常不错的选择。JRTPLIB 是一个用 C++ 语言实现的 RTP 库,这个库使用Socket 机制实现网络通讯 因此可以运行在 Windows、Linux、FreeBSD、Solaris、Unix和VxWorks 等多种操作系统上。
2、jrtplib的编译
(1) 此库在PC机Linux上的编译。
以下使用Readhat 9.0,内核版本为2.4。jrtplib库一般与jthread库一起使用。当jrtplib库单独使用时,确保主机系统上安装了GCC编译器。步骤如 下:进入安装目录configure;make;make install。安装完把此库的include文件放到/usr/local/include下。当与jthread库一起使用时,先编译 jthread,并把此库编译后的include文件放在/usr/local/include下,然后再编译jrtplib库。
(2) jrtplib库应用于ARM9的交叉编译。
jrtplib与平台有关。jrtplib库的交叉编译指定的ARM编译工具链是arm-linux,而ARM7的交叉编译工具链是arm-elf, 因此在ARM9+Linux平台上实现。用arm-linux-gcc编译时,需做此库的交叉编译场景分析。经过多次尝试成功编译。具体做 法,configure前,在shell环境下输入两条语句export config_BUILD_CC = gcc export config_TARGET_CC = arm-linux-gcc,配置使用./configure --host = arm-linux。在rtperrors.h中添加头文件stdio.h,否则编译会出现相应的问题。
若干注意问题:
1. arm-linux-gcc -v
2. 分别 进入 目录 jthread-1.2.1 jrtplib-3.7.1
./configure --host=arm-linux --prefix=home/XXX/
make
make install
3. vi src/rtperrors.h
添加 #include <stdio.h>
4. vi src/rtpconfig_unix.h
注释 //#define RTP_BIG_ENDIAN // comment this if the target is a little endian system
5.有时候编译会提示memcpy找不到,
INCLUDES = -I /usr/local/include/jthread -I ../src/
LDADD = ../src/.libs/libjrtp.a -L/usr/local/lib/ -ljthread -lpthread
7. cp -arf *.so 拷贝库