在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等问题

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

猜你喜欢

转载自blog.csdn.net/qq_34732729/article/details/105838929