build rtmpdump for current host

step1、安装依赖

所有时Terminal + Shell + GNU CoreUtils
下载时cURL
解压时tar + gzip
编译时gmakegcc / GCC | Clang / LLVM
运行时
  • glibc ( libc.sold-linux-x86-64.so )
  • OpenSSL ( libssl.so )

step2、使用curl命令下载RTMPDump源码包 (

curl -LO https://mirrors.tuna.tsinghua.edu.cn/debian/pool/main/r/rtmpdump/rtmpdump_2.4+20151223.gitfa8646d.1.orig.tar.gz

step3、使用tar解压RTMPDump源码包

tar vxf rtmpdump_2.4+20151223.gitfa8646d.1.orig.tar.gz

step4、进入rtmpdump-20151223目录

cd rtmpdump-20151223

step5、查看rtmpdump-20151223目录中的内容

step6、使用curl命令下载RTMPDump源码包针对OpenSSL 1.1的补丁

curl -LO https://raw.githubusercontent.com/Homebrew/formula-patches/85fa66a9/rtmpdump/openssl-1.1.diff

RTMPDump源码使用的是OpenSSL 1.0,现在基本上都使用OpenSSL 1.1,两个版本之间的API有变化,所以,我们需要打个补丁。

step7、应用补丁

patch -p0 < openssl-1.1.diff

step8、修改librtmp/Makefile文件

如果您当前的操作系统是macOS,请执行如下的命令,否则跳过该步:

sed -i".bak" "s@soname@install_name@g" librtmp/Makefile

这个意思是把librtmp/Makefile文件中的soname字符串替换为install_name, 这么做的原因是:-sonameGNU ld的参数, 而macOS系统不使用GNU ld, 它自己的ld没有-soname参数,与他相同意思的参数是-install_name

step9、使用make进行编译、安装

make [option]... [VAR=VALUE]... [TARGET]...
VARVALUE示例说明
CCgcc |  clang指定C编译器
CFLAGS-O2 -v指定C编译器的参数。覆盖MakefileCFLAGS的定义
XCFLAGS-O2 -v指定C编译器的参数。扩展MakefileCFLAGS的定义
LDld指定C链接器
LDFLAGS-L<libDIR>指定C链接器的参数。覆盖MakefileLDFLAGS的定义
XLDFLAGS-L<libDIR>指定C链接器的参数。扩展MakefileLDFLAGS的定义
LIBS-l<libName>指定C链接器要链接的库的名称
CROSS_COMPILEaarch64-linux-android-指定交叉编译工具的前缀

示例:

make CFLAGS='-O2 -v' && sudo make install prefix=/usr