SRS4.0源码分析-makefile

SRS 的社群来了,想加入微信社群的朋友请购买《SRS原理》电子书,里有更高级的内容与答疑服务。


本文采用的 SRS 版本是 4.0-b8 , 下载地址:github


makefile 语法请看 《跟我一起写Makefile》,SRS 的 makefile 是 configure shell 脚本生成的。

为了方便读者对着代码行数,我的 makefile 下载地址,百度网盘,提取码:5n9w

虽然 makefile 是代码生成的,但是并没有做太多的封装,抽象,所以还是比较容易阅读的。

SRS 的 makefile 总共 150 行左右,依赖非常清晰。


开始分析 makefile 。

因为 makefile 的规则是 ,第一个 不 以 . 开头的 targe 就是默认的target,所以 make 命令执行的时候,是执行 default 这个 target 个规则。

default 依赖 server,然后 在 104 ~ 106 行, server 又依赖 _prepare_dir,如下

#104 ~ 106 行
server: _prepare_dir
    @echo "Build the SRS server"
    $(MAKE) -f objs/Makefile srs

_prepare_dir 这个 target 主要是创建目录,如下:

# 153 ~ 160 行
@mkdir -p objs
@mkdir -p objs/src/core
@mkdir -p objs/src/kernel
@mkdir -p objs/src/protocol
@mkdir -p objs/src/app
@mkdir -p objs/src/main
@mkdir -p objs/src/main

_prepare_dir 创建完 目录之后 ,就会执行 104 ~ 106 行 的 $(MAKE) -f objs/Makefile srs 命令。果然,在这里 使用了 objs/Makefile

这里详细 讲解一下 这个命令,-f 是指定 makefile 文件,后面的 srs 是一个 target ,所以实际执行的是 objs/Makefile 文件的 srs target 的编译规律,代码如下:

# build objs/srs
srs: objs/srs
​
objs/srs: objs/src/core/srs_core.o 很多 o 后缀文件 objs/src/main/srs_main_server.o 
    $(LINK) -o objs/srs objs/src/core/srs_core.o 很多 o 后缀文件 objs/src/main/srs_main_server.o objs/st/libst.a objs/openssl/lib/libssl.a objs/openssl/lib/libcrypto.a objs/srtp2/lib/libsrtp2.a objs/ffmpeg/lib/libavcodec.a objs/ffmpeg/lib/libswresample.a objs/ffmpeg/lib/libavutil.a objs/opus/lib/libopus.a -ldl -lpthread -lrt

由此 可见 srs 可执行文件 ,就是由上面的命令生成的。

makefile 逻辑分析完毕。


由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Loken2020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值