最近在做一个网络摄像头RTMP推流项目,由于只需要rtmp一些基础的连接,推流接口,所以只需要编译Rtmpdump里面的librtmp库。想要交叉编译librtmp这个库需要准备三样东西:openssl,zlib,你自己的交叉编译链。openssl,zlib是librtmp编译所依赖的库,openssl是有关数据加密的库,zlib是有关数据压缩的库。如果你不需要这些或者不想这么麻烦可以参考https://blog.csdn.net/fteworld/article/details/51171731,根据他的方法可以免openssl,zlib编译,如果编译时仍出现zlib.h无法找到的报错时,你可以把报错的那个文件的#include <zlib.h>去掉,我试过报错的文件是hashswf.c,直接把这个文件的#include <zlib.h>去掉就可以make过了。
话题拉回来正常交叉编译librtmp库需要四步:
-
构建自己的交叉编译环境
根据你硬件芯片的不同,各个公司的SDK包里面都有提供相应的交叉编译链,有些公司的交叉编译链的安装过程可能更加方便,你按照他的说明就可以了(用过海思的交叉编译链安装,只需要运行他的脚本就可以了很方便),我这里说的是一般的安装方法。
①拿到你的交叉编译链,命令
tar -vxf 交叉编译链.tar
解压。
②
gedit /etc/profile
修改环境变量,在最后增加
export PATH=$PATH:/home/tang/Desktop/sample/rsdk-4.8.5-5281-EL-3.10-u0.9.33-m32fut-161202/bin
注意
$PATH:
后面跟的是你自己交叉编译链文件下的bin文件的路径。
③source /etc/profile立即生效环境变量。
④确定交叉编译环境构建成功与否
至此交叉编译环境搭建完成了。
-
交叉编译zlib库
①可以通过http://zlib.net/官网下载或者命令
wget http://zlib.net/zlib-1.2.11
获取zlib库
②
tar -vxf zlib-1.2.11
解压
③cd进zlib库目录输入命令
CC=mips-linux-gcc ./configure --prefix=/usr/local
,注意给CC赋的是你自己的交叉编译链名,给prefix赋的值是你想安装的目录,这个按自己的情况进行修改。
④make
⑤make install
-
交叉编译openssl库
①可以通过http://www.openssl.org官网下载或者命令
wget http://www.openssl.org/source/openssl-1.0.1u
获取openssl库
②
tar -vxf openssl-1.0.1u
解压
③cd进openssl目录输入命令
CC=mips-linux-gcc ./config no-asm shared --prefix=/usr/local
,shared是生成动态链接库的参数。
④make
⑤make install
⑥
⑦apt-get install libssl-dev
,在最后添加gedit /etc/profile
和export C_INCLUDE_PATH=/usr/local/include/
,这两个路径是openssl的头文件寻找路径,因为我的安装目录在export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/include/
下,所以在添加路径之前确定你自己的openssl头文件路径。之后/usr/local
立即生效变量环境。source /etc/profile
-
交叉编译librtmp库
①librtmp库可以通过
git clone git://git.ffmpeg.org/rtmpdump
从官网上下下来,不过我们只需要其中的librtmp,也可以到https://download.csdn.net/download/weixin_36983723/10743776直接下下来用。
②修改Makefile文件,将其中的
修改成你自己的交叉编译链,例如我的就改成CC=$(CROSS_COMPILE)gcc LD=$(CROSS_COMPILE)ld AR=$(CROSS_COMPILE)ar
,当然如果嫌麻烦也可以在make的时候加参数CC=mips-linux-gcc LD=mips-linux-ld AR=mips-linux-ar
make CROSS_COMPILE=mips-linux-
。
修改
为CRYPTO=OPENSSL
CRYPTO=/usr/local/bin
,同样这里的路径也是你openssl的安装路径下的bin文件。
③make && make install