hi3518移植librtmp

一:编译openssl
下载:openssl:
https://www.openssl.org/source/
tar -zxvf openssl-1.0.2l
解压后进入目录,运行
./config no-asm shared –prefix=/home/chy/share/rtmp/openssl –cross-compile-prefix=arm-hisiv100nptl-linux-
参数说明:
no-asm : Do not use assembler code.
shared : In addition to the usual static libraries, create shared
libraries on platforms where it‘s supported. See “Note on
shared libraries” below。(编译连接成动态库)

–prefix : 指定之后make install后生成的执行文件跟库的存放位置。

–cross-compile-prefix :指定交叉编译工具。
最后,运行make,make install
在 /home/chy/share/rtmp/openssl目录下就可以生成 openssl相关的库文件了

二:编译zlib:
下载:zlib
http://www.zlib.net/
tar -zxvf zlib-1.2.11
解压后进入目录:
运行
export CC=arm-hisiv100nptl-linux-gcc
./configure –prefix=/home/chy/share/rtmp/zlib
make
make install
在/home/chy/share/rtmp/zlib下就可以得到zlib的相关文件。
三:编译librtmp
直接git下载:git clone git://git.ffmpeg.org/rtmpdump
两种方法可以设置相关库和头文件的路径:
1:把openssl和zlib的相关文件复制到安装海思的交叉编译工具的目录下,具体的要看你hi318的交叉工具链的安装路径;
2:直接用绝对路径来进行设置的;
我是直接使用第二种的。
librtmp有两个Makefile文件,根目录下和librtmp目录下,把两个文件都加上如下:
XLDFLAGS=-L/home/chy/share/rtmp/rtmpdump/openssl/lib
XLDFLAGS+=-L/home/chy/share/rtmp/rtmpdump/zlib/lib
hi3518移植librtmp_第1张图片
INC=-I/home/chy/share/rtmp/rtmpdump/openssl/include
INC+=-I/home/chy/share/rtmp/rtmpdump/zlib/include
修改完成后,运行如下命令
make SYS=posix CROSS_COMPILE=arm-hisiv100nptl-linux-
hi3518移植librtmp_第2张图片
编译成功,即可得到librtmp相关的文件;

接下来就可以进行简单的测试了

#include "rtmp.h"
#include "rtmp_sys.h"
#include "amf.h"

int main()
{
    RTMP *rtmp;
    rtmp = RTMP_Alloc();
    RTMP_Init(rtmp);
    RTMP_SetupURL(rtmp, "localhost");
    RTMP_EnableWrite(rtmp);
    RTMP_Connect(rtmp, NULL);
    RTMP_ConnectStream(rtmp, 0);
    char *buf = (char *)malloc(1024*1024);
    RTMP_Read(rtmp,buf,1024*1024);  

    return 0;
}

把相关的文件都拷到该文件目录下,运行下面的命令,编译成功,库可用了。
arm-hisiv100nptl-linux-gcc rtmp.c -I./openssl/include -I./zlib/include -L./ -lrtmp -L./openssl/lib -lssl -lcrypto -L./zlib/lib -lz -o rtmp

最后,就是运行了,但是如何使用动态链接库又是一个问题了,这个可以多看看其他的说明,这里,我把库在 /lib下做软连接,可以使用arm-hisiv100nptl-linux-readelf -d rtmp对应用程序进行查看依赖哪些库文件,arm-linux下没有ldd这个命令,可以用readelf查看;
如下:
hi3518移植librtmp_第3张图片

使用命令 ln -s dst_file s_file
如:ln -s /home/chy/librtmp.so.1 /lib/librtmp.so.1
完成软连接后,就可以运行了。

你可能感兴趣的:(流媒体,librtmp,移植)