天天看点

Librtmp的交叉编译详解

最近在做一个网络摄像头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库需要四步:

  1. 构建自己的交叉编译环境

    根据你硬件芯片的不同,各个公司的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立即生效环境变量。

④确定交叉编译环境构建成功与否

Librtmp的交叉编译详解

至此交叉编译环境搭建完成了。

  1. 交叉编译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

  2. 交叉编译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/

    export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/include/

    ,这两个路径是openssl的头文件寻找路径,因为我的安装目录在

    /usr/local

    下,所以在添加路径之前确定你自己的openssl头文件路径。之后

    source /etc/profile

    立即生效变量环境。
  3. 交叉编译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

    修改成你自己的交叉编译链,例如我的就改成

    CC=mips-linux-gcc LD=mips-linux-ld AR=mips-linux-ar

    ,当然如果嫌麻烦也可以在make的时候加参数

    make CROSS_COMPILE=mips-linux-

    修改

    CRYPTO=OPENSSL

    CRYPTO=/usr/local/bin

    ,同样这里的路径也是你openssl的安装路径下的bin文件。

    ③make && make install