Webrtc (1) - Windows 编译

server/2025/1/25 3:58:15/

最近项目上遇到webrtc wgc 的几个test case无法通过,与webrtc人员沟通后决定要自行修复一下(因为他们不想管…)

参考文档

  • https://webrtc.org/support/contributing
  • https://chromium.googlesource.com/chromium/src/+/main/docs/#checking-out-and-building

以上两个够了,一个是webrtc的,一个是chromium的,他俩亲兄弟,一套体系

正常流程

他的常规要求比如git, vs,硬盘大小什么的不再赘述,自行阅读,但一般开发电脑都OK,重中之重,一个稳定可靠的 科学上网工具,如果没有,就不要往下看了,以下的所有步骤,都认为你开了科学上网工具,而且认为你已经正确的开了全局代理或运行在设置了proxy的命令行中~

  • 下载工具包 depot_tools

    他的使用手册在 depot_tools_tutorial,刚开始没必要看,下载安装即可,当然里面也描述了一些问题的解决方法,但我这一步都没遇到过

  • 配置 depot_tools

    Add depot_tools to the front of your PATH (must be ahead of any installs of Python). Assuming you unzipped the bundle to C:\workspace\depot_tools:

    解压到指定目录里,随意,然后添加到环境变量中,为了避免工具链与你的其他工具冲突,请把它上移最顶部或者最前面。

  • 运行gclient

    1. 新建一个文件夹,比如,webrtc
    2. 打开这个文件夹,并且将你命令行的工作目录设置到这里或者简单 cd 过来
    3. 输入 gclient
    4. 没什么错的话他会经过一会儿更新之类的,然后给你打印出来一些选项,这就ok了
  • 拉取代码

    1. 还是在上一步的文件夹内,输入 fetch --nohooks webrtc
    2. 然后就是漫长的等待,大概有几百MB的代码和一些工具要同步
    3. 上一步没有失败最好不过了,有了也不怕,任何报错后再次输入gclient sync, fetch只是在第一次时使用,随后都用gclient sync, 然后看错误解决错误吧,我只遇到过让我对git做一些配置以及一个proxy的报错,说是检查到你用了代理,但是没有检测到代理配置文件(他应该是有工具可以读这个配置文件,这样他的工具链可以走你的代理)
    4. 在上一步的文件夹内新建文件.boto, 并写入以下内容
     [Boto]proxy = 127.0.0.1proxy_port = 7890proxy_type = http
    

    5.重新运行 gclient sync直到没有任何报错而且资源都下载完成即可~

  • 构建代码

    参考 webrtc.googlesource.com/src/+/main/docs/native-code/development/#generating-ninja-project-files" rel="nofollow">https://webrtc.googlesource.com/src/+/main/docs/native-code/development/#generating-ninja-project-files

    cd src
    gn gen out/Default --args="is_debug=false" --ide=vs
    autoninja -C out/Default
    

    其中 is_debug=false表示要编译release,--ide=vs表示要生成vs的项目文件,不出意外的话还是会有意外,比如我碰到四个个问题

    1. vs版本低了,更新即可

    Chromium requires Visual Studio 2022 (>=17.0.0) to build. Visual Studio can also be used to debug Chromium.

    1. WINDOWS SDK版本低了,通过vs installer去更新安装对应版本即可

    Windows 11 SDK version 10.0.22621.2428. This can be installed separately or by checking the appropriate box in the Visual Studio Installer.

    1. WINDOWS SDK版本够了,但是debugger组件没有,通常是因为你是通过vs installer安装的

    (Windows 11) SDK Debugging Tools 10.0.22621.755 or higher. This version of the Debugging tools is needed in order to support reading the large-page PDBs that Chrome uses to allow greater-than 4 GiB PDBs. This can be installed after the matching Windows SDK version is installed, from: Control Panel -> Programs and Features -> Windows Software Development Kit [version] -> Change -> Debugging Tools for Windows. If building on ARM64 Windows then you will need to manually copy the Debuggers\x64 directory from another machine because it does not get installed on ARM64 and is needed, whether you are building Chromium for x64 or ARM64 on ARM64.

    4.让你设置DEPOT_TOOLS_WIN_TOOLCHAIN用来生成工程时,用本地的vs 而不是从Google下载,他也不给外人下载

    Also, add a DEPOT_TOOLS_WIN_TOOLCHAIN environment variable in the same way, and set it to 0. This tells depot_tools to use your locally installed version of Visual Studio (by default, depot_tools will try to use a google-internal version).

    需要注意的是如果你的host机器是arm64架构的,这个安装程序还是会缺少x64架构的debugger,没办法只能从别的机器里面copy一个过来~

  • 运行test case

    经过漫长的等待,5000多个文件的编译完成后,可以在out/Default中查看你所编译好的一切,随便运行点什么吧。


http://www.ppmy.cn/server/161205.html

相关文章

SQL Server所有数据类型大全

数据类型列表 整数类型:bigint、int、smallint、tinyint精确数值类型:decimal、numeric近似数值类型:float、real字符类型:char、varchar、text、nchar、nvarchar、ntext日期和时间类型:date、time、datetime2、dateti…

MATLAB中characterListPattern函数用法

目录 语法 说明 示例 在文本中查找元音字母 提取在某字母范围内的字母 查找以元音字母开头的单词 将人名按字母顺序分组 characterListPattern函数的功能是匹配列表中的字符。 语法 pat characterListPattern(characters) pat characterListPattern(startCharacter,…

单例模式 - 单例模式的实现与应用

引言 单例模式(Singleton Pattern)是设计模式中最简单且最常用的模式之一。它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。单例模式常用于需要全局唯一对象的场景,如配置管理、日志记录、线程池等。 本文将详细介…

宝塔UDP服务器部署记录,unityClient,pythonServer

最近项目接到新需求,需要用Unity 客户端(发送端)控制另一台 Unity 客户端(接收端),中间用UDP服务器做数据中转。 先测试一下连通性,我用 Python 搞了个服务器 demo。 在正式开发之前&#xff…

分布式光纤应变监测是一种高精度、分布式的监测技术

一、土木工程领域 桥梁结构健康监测 主跨应变监测:在大跨度桥梁的主跨部分,如悬索桥的主缆、斜拉桥的斜拉索和主梁,分布式光纤应变传感器可以沿着这些关键结构部件进行铺设。通过实时监测应变情况,能够精确捕捉到车辆荷载、风荷…

通过Python编程语言实现“机器学习”小项目教程案例

1. Python与机器学习概述 1.1 Python语言特点 Python是一种广泛使用的高级编程语言,具有简洁、易读、易学的特点,这使得它成为初学者和专业人士的首选语言之一。 简洁性:Python的语法简洁明了,减少了代码量,提高了开…

skynet 源码阅读 -- 核心概念服务 skynet_context

本文从 Skynet 源码层面深入解读 服务(Service) 的创建流程。从最基础的概念出发,逐步深入 skynet_context_new 函数、相关数据结构(skynet_context, skynet_module, message_queue 等),并通过流程图、结构…

用Python绘制一只懒羊羊

目录 一、准备工作 二、Turtle库简介 三、绘制懒羊羊的步骤 1. 导入Turtle库并设置画布 2. 绘制头部 3. 绘制眼睛 4. 绘制嘴巴 5. 绘制身体 6. 绘制四肢 7. 完成绘制 五、运行代码与结果展示 六、总结 在这个趣味盎然的技术实践中,我们将使用Python和Turtle图形…