在win10上编译webRTC(编译篇)

坑坑不息。主要是记录自己的安装过程。

参考链接:https://webrtc.org.cn/mirror/   先附上参考链接,方便参看的人,找到官网安装编译教程。

一、准备工作

  1. win10安装git工具及TortoiseGit。这里,我在本地E盘,新建了一个文件夹 :gitHub.。下载编译webRTC的盘,要有100G的空间。因为下载下来的webRTC源码10G。 下载时间1个多小时。
  2. 安装VS2017的编译器,以及SDK。至于SDK的版本,是有要求的,目前我用的是 10.0.17763.0。
  3. 然后安装python2, 根据官网的链接,就可以下载到。我这里本机已经有了python3, 根据网上的教程调整了一下,默认启动python2.但后面还是出问题了,所以强烈建议把python3先删掉。直接安装python2. 记得把python路径添加到 环境变量中。
  4. https://www.python.org/downloads/windows/
  5. 下面这个下载好之后,然后把*.exe 放到上面安装的路径下,直接运行就OK了。

    https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/

 二、开始下载

1、 在E:\gitHub下,新建一个文件git.txt的文件,把下面的代码(官网链接中的第一大段代码),复制进去。然后把后缀名改了:git.sh  。然后,在这个文件夹 E:\gitHub 空白处右键,选择 git bash here. 然后输入: ./git.sh    回车。执行git.sh脚本(如果官网的这个脚本更新的话,请跟进官网提示进行)

git config --global user.email "<your email>"
git config --global user.name "<your name>"

git config --global url.http://120.92.49.206:3232/chromiumsrc/webrtc.git.insteadOf https://chromium.googlesource.com/external/webrtc.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/base.git.insteadOf https://chromium.googlesource.com/chromium/src/base
git config --global url.http://120.92.49.206:3232/chromiumsrc/build.git.insteadOf https://chromium.googlesource.com/chromium/src/build
git config --global url.http://120.92.49.206:3232/chromiumsrc/buildtools.git.insteadOf https://chromium.googlesource.com/chromium/src/buildtools
git config --global url.http://120.92.49.206:3232/chromiumsrc/gradle.git.insteadOf https://chromium.googlesource.com/external/github.com/gradle/gradle.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/ios.git.insteadOf https://chromium.googlesource.com/chromium/src/ios.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/testing.git.insteadOf https://chromium.googlesource.com/chromium/src/testing
git config --global url.http://120.92.49.206:3232/chromiumsrc/third_party.git.insteadOf https://chromium.googlesource.com/chromium/src/third_party
git config --global url.http://120.92.49.206:3232/chromiumsrc/clang-format.git.insteadOf https://chromium.googlesource.com/chromium/llvm-project/cfe/tools/clang-format.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/libcxx.git.insteadOf https://chromium.googlesource.com/chromium/llvm-project/libcxx.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/libcxxabi.git.insteadOf https://chromium.googlesource.com/chromium/llvm-project/libcxxabi.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/libunwind.git.insteadOf https://chromium.googlesource.com/external/llvm.org/libunwind.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/android_ndk.git.insteadOf https://chromium.googlesource.com/android_ndk.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/android_tools.git.insteadOf https://chromium.googlesource.com/android_tools.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/auto.git.insteadOf https://chromium.googlesource.com/external/github.com/google/auto.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/catapult.git.insteadOf https://chromium.googlesource.com/catapult.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/compact_enc_det.git.insteadOf https://chromium.googlesource.com/external/github.com/google/compact_enc_det.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/colorama.git.insteadOf https://chromium.googlesource.com/external/colorama.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/depot_tools.git.insteadOf https://chromium.googlesource.com/chromium/tools/depot_tools.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/errorprone.git.insteadOf https://chromium.googlesource.com/chromium/third_party/errorprone.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/ffmpeg.git.insteadOf https://chromium.googlesource.com/chromium/third_party/ffmpeg.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/findbugs.git.insteadOf https://chromium.googlesource.com/chromium/deps/findbugs.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/freetype2.git.insteadOf https://chromium.googlesource.com/chromium/src/third_party/freetype2.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/harfbuzz.git.insteadOf https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/gtest-parallel.git.insteadOf https://chromium.googlesource.com/external/github.com/google/gtest-parallel
git config --global url.http://120.92.49.206:3232/chromiumsrc/googletest.git.insteadOf https://chromium.googlesource.com/external/github.com/google/googletest.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/icu.git.insteadOf https://chromium.googlesource.com/chromium/deps/icu.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/jsr-305.git.insteadOf https://chromium.googlesource.com/external/jsr-305.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/jsoncpp.git.insteadOf https://chromium.googlesource.com/external/github.com/open-source-parsers/jsoncpp.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/junit.git.insteadOf https://chromium.googlesource.com/external/junit.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/fuzzer.git.insteadOf https://chromium.googlesource.com/chromium/llvm-project/compiler-rt/lib/fuzzer.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/libjpeg_turbo.git.insteadOf https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/libsrtp.git.insteadOf https://chromium.googlesource.com/chromium/deps/libsrtp.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/libvpx.git.insteadOf https://chromium.googlesource.com/webm/libvpx.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/libyuv.git.insteadOf https://chromium.googlesource.com/libyuv/libyuv.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/linux-syscall-support.git.insteadOf https://chromium.googlesource.com/linux-syscall-support.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/mockito.git.insteadOf https://chromium.googlesource.com/external/mockito/mockito.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/nasm.git.insteadOf https://chromium.googlesource.com/chromium/deps/nasm.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/openh264.git.insteadOf https://chromium.googlesource.com/external/github.com/cisco/openh264
git config --global url.http://120.92.49.206:3232/chromiumsrc/requests.git.insteadOf https://chromium.googlesource.com/external/github.com/kennethreitz/requests.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/robolectric.git.insteadOf https://chromium.googlesource.com/external/robolectric.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/ub-uiautomator.git.insteadOf https://chromium.googlesource.com/chromium/third_party/ub-uiautomator.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/usrsctp.git.insteadOf https://chromium.googlesource.com/external/github.com/sctplab/usrsctp
git config --global url.http://120.92.49.206:3232/chromiumsrc/binaries.git.insteadOf https://chromium.googlesource.com/chromium/deps/yasm/binaries.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/patched-yasm.git.insteadOf https://chromium.googlesource.com/chromium/deps/yasm/patched-yasm.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/tools.git.insteadOf https://chromium.googlesource.com/chromium/src/tools
git config --global url.http://120.92.49.206:3232/chromiumsrc/client-py.git.insteadOf https://chromium.googlesource.com/infra/luci/client-py.git
git config --global url.http://120.92.49.206:3232/chromiumsrc/boringssl.git.insteadOf https://boringssl.googlesource.com/boringssl.git

2、 还是在github的路径下(当然你可以改),下载并安装depot_tools。 输入命令的工具,还是:git bash here

#安装depot_tools
cd %USERPROFILE%
rd /s /q depot_tools webrtc & git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git -b gitlab

3、安装好 depot_tools之后,记得把这个工具添加到 环境变量 中。

4、在e:github 路径下,添加一个webRTC的文件夹,然后,以管理员身份,启动cmd, 切换到webRTC文件夹下,执行下面这句代码(一条一条的进行),开始下载,这里1个多小时,耐心等待,如果发现cmd半天没响应,可以按 ↓ 键盘,就会有反应了。

gclient config --name src https://chromium.googlesource.com/external/webrtc.git@gitlab

set CDS_CLANG_BUCKET_OVERRIDE=http://120.92.49.206:3232/chromiumsrc/commondatastorage/raw/master/public/chromium-browser-clang

set DEPOT_TOOLS_WIN_TOOLCHAIN=0

gclient sync --patch-ref=https://chromium.googlesource.com/chromium/src/build.git@gitlab

终于下载完了,耗时不止 2918.13s = 50min ,前面的部分也有耗时。

文件还是很大的吧。

三、编译生成

编译的库,共分为四种情况,下面分别进行。依然是以管理员身份启动cmd, 然后切换到src 目录下,进行,代码一条一条的输入。编译的过程,20分钟就能搞定(顺利的话)。生成的文件,都存放在src\out文件夹下面。

release版本,进行ninja 操作之前,需要有一个东西注意,那就是:搜索刚刚编译的文件夹中的 *ninja 文件,把其中的MT替换为MD,一定要把下面两个打钩。

1、release_64

下面是官网给的方法,后面还有其他参数需要,请酌情添加。

set DEPOT_TOOLS_WIN_TOOLCHAIN=0

gn gen out/Release_64 "--args=is_debug=false"

ninja -C out/Release_64

 

2、release_32

set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2017 //2017是指定vs版本

//下面一条指令生成VS2017的win32 release工程
gn gen out/Release_32 --ide=vs2017 --args="is_debug=false target_cpu=\"x86\""
ninja -C out/Release_32

3、debug_64

set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2017 //2017是指定vs版本

//下面一条指令生成VS2017的win64 debug工程
gn gen out/Debug_64 --ide=vs2017 --args="is_debug=true target_cpu=\"x64\""
ninja -C out/Debug_64

4、debug_32

set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2017 //2017是指定vs版本

//下面一条指令生成VS2017的win32 debug工程
gn gen out/Debug_32 --ide=vs2017 --args="is_debug=true target_cpu=\"x86\""
ninja -C out/Debug_32

 

四、后续问题

1、当4个版本都编译好之后,如何把项目需要的 lib(obj) include这些文件提取出来呢?答案:写个脚本,提取一下子。

2、如何把webRTC的demo跑起来呢?答案:新建一个项目,将peerconnection的文件添加进去,然后包含1问题中的include和lib。编译即可。当然,这里还是会遇到很多问题。比如libyuv 、json等问题

        https://download.csdn.net/download/qq_34732729/14027619,demo链接。仅包含H264_release32_server.exe, client的源码。release文件下执行文件,可以直接运行。

3、编译完的库,会不会有问题呢?答案:肯定会有的。 比如2中的demo编译通过,但运行直接报错。然后又重新编译的webRTC的源码。修改:gn gen out/....--args="..后面的参数..."

4、当你很开心的按照我的步骤进行的时候,也成功了的时候,发现client.exe, 运行几秒钟会崩溃。。。放心,后面还有好多坑,这是我师父教我的。。。你也会重新来过的(我后来又重新编译的源码)。所有的坑,都是一步一步踩出来的,这样才有进步。

这里详细记录了编译webRTC遇到的问题:https://blog.csdn.net/qq_34732729/article/details/105707104

 

 

其他参考链接:

https://blog.csdn.net/gupar/article/details/78565677

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
在Windows 10上编译WebRTC可以按照以下步骤进行: 1. 首先,确保你的系统已经安装了Visual Studio。WebRTC在Windows上的编译需要使用Visual Studio环境。 2. 下载depot_tools,它是一个用于下载WebRTC源代码的工具。可以在GitHub上找到depot_tools的源码,并按照文档中的步骤进行安装。 3. 打开命令提示符或PowerShell,并导航到你想要保存WebRTC源代码的文件夹。 4. 使用以下命令克隆WebRTC的代码仓库: ``` git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git ``` 5. 添加depot_tools到系统的环境变量中。在命令提示符或PowerShell中,输入以下命令: ``` set PATH=%PATH%;[depot_tools目录的路径] ``` 这将使你能够在任何目录中使用depot_tools中的命令。 6. 使用以下命令下载WebRTC的源代码: ``` fetch --nohooks webrtc ``` 此命令将下载WebRTC的源代码到当前文件夹下的src目录中。 7. 进入src目录,并使用命令执行Hook脚本以获取编译所需的依赖项: ``` cd src gclient runhooks ``` 8. 接下来,根据你的编译需求选择合适的方案,并使用gn生成构建配置文件。 如果你想做一个默认构建,可以使用以下命令: ``` gn gen out/Default ``` 如果你想构建一个调试版本,可以使用以下命令: ``` gn gen out/Debug --args="is_debug=true" ``` 构建配置文件将生成在out/Default或out/Debug目录中。 9. 最后,使用ninja命令来编译WebRTC: ``` ninja -C out/Default ``` 或者,如果你选择了调试版本: ``` ninja -C out/Debug ``` 这将编译WebRTC生成可执行文件和库文件。 以上是在Windows 10上编译WebRTC的简要步骤。请注意,这只是一个概述,实际操作可能会根据具体环境有所不同。在实际操作中,请根据WebRTC项目的文档和最新的指南进行操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值