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 去掉,我试过报错的文件是hashswf.c,直接把这个文件的#include 去掉就可以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立即生效环境变量。
④确定交叉编译环境构建成功与否
mips-linux-gcc就是我的交叉编译链

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

  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=OPENSSLCRYPTO=/usr/local/bin,同样这里的路径也是你openssl的安装路径下的bin文件。
    ③make && make install

你可能感兴趣的:(交叉编译)