未分类 · 2021-12-22

live555交叉编译(ubuntu和君正平台)

一、 简介

Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。Live555实现了对多种音视频编码格式的音视频数据的流化、接收和处理等支持,包括MPEG、H.263+、DV、JPEG视频和多种音频编码。同时由于良好的设计,Live555非常容易扩展对其他格式的支持。目前,Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer。

该项目的源代码包括四个基本的库,各种测试代码以及IVE555 Media Server。四个基本的库分别是UsageEnvironment,groupsock,liveMedia,BasicUsageEnvironment。

二、 下载
官网:http://www.live555.com/
源码:http://www.live555.com/liveMedia/public/

三、 编译
1、 君正平台

解压压缩包,并进入源码目录;
tar zxvf live555-latest.tar.gz
cd live

2) 拷贝config文件,根据自己交叉编译器,修改后缀为自己的;

cp config.armlinux config.mips-linux-uclibc-gnu

3)修改config.mips文件,将交叉编译链设置为自己的,COMPILE_OPTS选项中添加-DLOCALE_NOT_USED和-fPIC参数;
由于在开发板上使用的uclibc交叉编译工具链编译,工具链中缺少xlocale.h这个头文件,而live555中liveMeida/locale.hh中调用该头文件,编译时会导致错误,通过添加宏:LOCALE_NOT_USED,可以关闭locale这个模块,防止编译报错。

CROSS_COMPILE?= mips-linux-uclibc-gnu-
COMPILE_OPTS = $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DLOCALE_NOT_USED -fPIC
C = c
C_COMPILER = $(CROSS_COMPILE)gcc
C_FLAGS = $(COMPILE_OPTS)
CPP = cpp
CPLUSPLUS_COMPILER = $(CROSS_COMPILE)g++
CPLUSPLUS_FLAGS = $(COMPILE_OPTS) -Wall -DBSD=1
OBJ = o
LINK = $(CROSS_COMPILE)g++ -o
LINK_OPTS =
CONSOLE_LINK_OPTS = $(LINK_OPTS)
LIBRARY_LINK = $(CROSS_COMPILE)ar cr
LIBRARY_LINK_OPTS = $(LINK_OPTS)
LIB_SUFFIX = a
LIBS_FOR_CONSOLE_APPLICATION =
LIBS_FOR_GUI_APPLICATION =
EXE =

4) 生成Makefile,并编译;

./genMakefiles mips
make

编译发生错误解决:
1. openssl/ssl.h: No such file or directory
sudo ln -s /usr/include/openssl /usr/local/include/openssl

2. openssl/opensslconf.h: No such file or directory
sudo ln -s /usr/include/x86_64-linux-gnu/openssl/opensslconf.h /usr/include/openssl/opensslconf.h

3.cannot find -lssl
将openssl/lib下的.a .so文件拷贝至/opt/mips-gcc472-glibc216-32bit/lib/gcc/mips-linux-gnu/4.7.2/uclibc/
或者在 config.mips 加上-DNO_OPENSSL=1 和 LIBS_FOR_CONSOLE_APPLICATION= 后面留空

5.把静态库搞出来
liveMedia项目的源代码包括四个基本的库,各种测试代码以及IVE555 Media Server。

四个基本的库分别是UsageEnvironment&TaskScheduler,groupsock,liveMedia,BasicUsageEnvironment。

直接执行脚本

#!/bin/sh

rm -rf live555/
mkdir live555
INSTALL_DIR_LIVE=/home/ky

#create file
cd live555
mkdir lib
mkdir include
cd –

cd live555/include
mkdir liveMedia
mkdir BasicUsageEnvironment
mkdir UsageEnvironment
mkdir groupsock
cd –

#copy include
cp -rf liveMedia/include/*.*h ${INSTALL_DIR_LIVE}/live555/include/liveMedia
cp -rf BasicUsageEnvironment/include/*.*h ${INSTALL_DIR_LIVE}/live555/include/BasicUsageEnvironment
cp -rf UsageEnvironment/include/*.*h ${INSTALL_DIR_LIVE}/live555/include/UsageEnvironment
cp -rf groupsock/include/*.*h ${INSTALL_DIR_LIVE}/live555/include/groupsock

#copy lib
cp -rf liveMedia/libliveMedia.a ${INSTALL_DIR_LIVE}/live555/lib
cp -rf BasicUsageEnvironment/libBasicUsageEnvironment.a ${INSTALL_DIR_LIVE}/live555/lib
cp -rf UsageEnvironment/libUsageEnvironment.a ${INSTALL_DIR_LIVE}/live555/lib
cp -rf groupsock/libgroupsock.a ${INSTALL_DIR_LIVE}/live555/lib

echo “————– install library done ——————”

 

完了 接下来就可以写应用程序为所欲为啦