3-4.编译WebRTC源码

前面的课程中呢,我已经讲了如何获取webrtc源码,同时呢,我们也介绍了在编译源码之前呢,我们要安装哪些工具?那今天呢,我们就来看一下如何编译webrtc源码。实际上啊,编译webrtc源码非常简单,那它主要用到两个工具,第一个工具呢就是gn。那gn的作用是什么呢?实际上它与CMake的功能是相同的。

就是产生编译脚本,那对于CMake了解的同学来说呢,就很好理解gn的功,那如果你对CMake不理解的话。其实也没关系,我们只要知道它会产生一个文件,那这个文件里存放的就是我们编译webrtc源码的一个顺序。也就是说,先编哪些文件,后编哪些文件,那这就是gn的作用,那第二个工具呢?就是ninja,ninja的功能呢?与make功能相同,

ninja呢?用于执行gn产生的脚本儿,也就是说,按照脚本儿的顺序,一步一步执行。比如我们是生成临时文件,还是对文件进行编译,还是最终将这些编译好的二进制文件链接到一起是吧?那这些呢?都是由你。做的那硬件呢,最终会调用预编译器,编译器还有链接器,最后完成最终的编译。这就是我们编译webrtc时用到的两个重要的工具,

一个是gn,一个是ninja,最后呢,我们再来看看编译webrtc用了哪些参数,那么这些参数它的含义是什么?那首先呢,我们来看看如何产生编译脚本。它使用的命令呢,就是gn gen out default。

那gn呢,就是我们刚才介绍的gn工具了gen呢。就是产生编译脚本儿,那最终输出到哪儿呢?就输出到out Default这个路径下,那out Default呢?是我们可以自己设置的,

一般情况下。我们将它的输出都会放到alt目录下,那么在alt目录下又可以放很多的子目录,比如默认情况下,我们放到Default目录下。如果H264我们可以写成out H264吧,或者你有其他特殊的版本,你都可以给它起一个单独的名字。那默认情况下呢,我们就使用这一行语句,就可以将编译脚本呢生成出,这非常简,那第二个呢?如果我们代码更新了,我们想重新生成。

这时候呢,我们需要先清理一下那使用的命令呢,就是这个命令,当我们执行这条命令的时候呢,它就会将目录中的内容呢给它清掉。那第三条命令呢,是将gn所支持的所有参数输出出来,其中的–list就是输出的意思,那么args呢?是表示,gn中的所有的参数,也就是说我要将这个输出目录中的所有gn的参数都输出出。好,最后一个,那如果我们想查看某个具体的参数的时候呢?

可以用。–list等于某个具体参数,比如说我们想查看一下is debug这个参数,它的默认值是什么?用法是怎样用的?那我们就可以直接在。杠杠list后边写上等于号,再写上你的参数名,那这个时候呢gn就可以输出这个参数的。具体的信那了解了这些内容之后呢,我们就可以对gnn所支持这些参数啊,做一下这个分析,看它都支持哪些参数,那这些参数它的含义是什么?比如说我们要想生成支持H264编解码器的webrtc,

那我们应该用哪个参数对吧?那通过这两个命令呢,我们都可以查找到好以上呢,就是we br 7编译的一些参数,那知道这些参数之后呢,我们再来看看如何?编译webrtc源码。那这里啊,我们还是要登录到我这Windows系统中是吧?来看一下如何编译webrtc源码。那这里啊,我们依然要打开avdancedu.com里的windows下编译880tc的这篇文章,那在这篇文章中呢?有一个编译及生成工程文件,那在这一小节中呢,

详细讲述了如何编译web。以及生成对应的工程文件,其实编译webrtc非常简单,就这三条命对吧?第一条呢就是我们要进入到webrtc的原码中。第二条呢,要生成编译脚本。第三个呢,是执行这个脚本进行编译,对吧?最终呢,输出结果就在alt default这个目录下。好当我们将webrtc编译成功之后呢,我们还可以执行这条命令,生成对应的工程文件。

那后边呢?我们就可以用visual studio对webrtc源码进行编辑和编译了,那下面呢?我们就来具体实操一下,还是打开?一个控制台,那这里呢?我已经进入到了外边提示源码这个目录,那在这个目录中,实际我已经生成了一个alt default的目录。我们可以看一下啊cd out/default/DIR.那你可以看到在这个目录下呢,已经有很多的文件,

对吧?这都是之前我生成的。那现在呢?如果我们想查找我们输出目录的一些gn参数的话,就可以执行gn AR js。杠杠list这样,那这个执行的时候呢?会花一点时间,我们耐心等一下啊。好,那这个时候呢,我们就可以看到很多的参数就被输出出来。但是参数还非常多,我们刚才看到频繁的在刷屏,那这里我们大体浏览一下,

你可以看到有很多的参。那这些参数呢?如果我们一项一项看,其实还是蛮花时间的,那如果你清楚有一些重要参数的时候呢?你可以直接让它等于,比如说is debug。好,那执行完这条语句之后呢,我们就可以看到is debug这个参数,它有一些说明对吧?当前的值是true,也就是说默认就是debug值。而且呢,它还是一个布尔值它的作用呢,

就是Debug build。那如果设置这项呢,我们就可以对我们这个输出工程呢进行debug调试。那所有的其他参数呢,都可以通过这种方式,然后进行查找。那里边的值非常多,那大家呢?下边可以自己去看一下好,这是如何查看参数?当然,我们还可以生成一个新的目录,对吧?我们推到这源码可以用gn gen out/mytext,

我们生成这样一个输出目录。这个时候呢,你就可以看到我们这个新的目录呢,已经生成了是吧?它产生了1324个这个target。260个文件对吧?用了多长时间都一清二楚,那如果我们想编译呢?就可以用ninja -C out/mytext 写上你的输出目录。好,这时候呢,它就开始编译了。

一共有5513个文件需要编译,那这个时间呢?会非常长,那我这里呢?就不执行了,下面呢,大家可以自己执行一下,当我们执行完成之后呢,你可以用gn gen --ide=VS out/mytext ,那通过这条命令呢,来产生VS工程文件,我们执行一下啊。当然,

对于这条命令来说,你不一定在它编译之后执行,也可以在它编译之前执行,这都是没问题的。也就是说,对于工程文件的生成呢?是不依赖于编译结果的,这也会花不少时间啊,我们耐心等待好,这个时候我们就可以看到工程文件呢,已经生成完了。那我们打开文件夹来看一下生成的工程文件到底是什么样,找到webrtc。好webrtc srcout/mytex.

.里边就有一个all.sln,我们双击all.sln。那这个时候呢,就会将visual studio调用起来,当然前提条件是我们前面已经将visual studio安装好,对吧?这个时候呢,它才能调起来。好,那它正在加载这个项目。这时候呢,我们就加载成功了。那我们点开src就可以看到所有的工程都在这里边。那对于源码中的内容呢?

后边儿我都会做详细介绍,对于每一个模块儿,它的作用是什么?那都会向你介绍清楚。OK,那上面呢?我就向你详细介绍了如何编译webrtc源码,并且呢,向你详细介绍了这里边列出的每一个命令。那尤其关键的呢,是我们最后的这两个命令。是非常关键的,因为我们后边儿在编译webrtc源码的时候呢,会添加很多的参对吧?那这些参数它的具体含义是什么?

我们都可以通过这两条命令。来进行查看。这样就可以使我们一目了然,知道每个参数它的作用是什么了。

如有侵权,请联系我删除

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值