未分类 · 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 ——————“