Webrtc源码编译之个人仓库

FGYP_GENERATORSGoogle官方文档参考:https://webrtc.github.io/webrtc-org/native-code/development/#

  • 安装VS

VS 必须安装在C盘,负责后续需要修改很多文件

​ 1、Desktop development with C++
​ 2、MFC and ATL support

​ 3、Windows10SDK
​ 选择版本:10.0.19041.0
​ Windows Software Development Kit,下载后安装上

​ 4、通过卸载面板,选择windowsSDK change->勾选所有

  • 安装depot_tools

    1、下载curl https://storage.googleapis.com/chrome-infra/depot_tools.zip --output depot_tools.zip2、解压缩mkdir c:\depot_toolstar -xf depot_tools.zip -C c:\depot_toolsdel depot_tools.zip
    3、 设置环境变量set PATH=c:\depot_tools;%PATH%
    
  • 下载源码

​ 1、设置webrtc本地环境

set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2019

​ 2、下载webrtc官方源码执行

fetch --nohooks webrtc

​ 3、下载仓库源码需要,拷贝

buildtools-》源码目录
.cipd.gclient.gclient_entries -》到源码上层目录

​ 同步编译依赖

gclient sync -f
  • 编译
set GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
set GYP_MSVS_VERSION=2019
set GYP_GENERATORS=msvs-ninja,ninja
set DEPOT_TOOLS_WIN_TOOLCHAIN=0

执行工程构建命令

gn gen out/release_h264_clang_vs2019 --args="target_cpu=\"x86\" is_debug=false enable_iterator_debugging=true use_custom_libcxx = false use_rtti=true is_component_build=false is_clang=true proprietary_codecs=true rtc_use_h264=true ffmpeg_branding=\"Chrome\" rtc_build_ssl=true " --ide=vs2019
  • error问题解决

1、vs没有安装在c盘

ERROR at //build/config/win/visual_studio_version.gni:27:7: Script returned non-zero exit code.

代表vs不是装在C盘,在webrtc/src/build/vs_toolchain.py 163行添加vs绝对路径

path = os.path.expandvars(‘D:/Microsoft Visual Studio/%s’ % version)

2、ERROR at //build/toolchain/toolchain.gni:10:1: Can’t load input file.

See //build/config/profiling/profiling.gni:6:1: whence it was imported.

代表编译库已经被污染了,替换

build目录build_overrides目录
3、执行生产工程命令无反应

先要执行gclient sync -f

gn gen out/release_h264_clang_vs2019_x64 --args="target_cpu=\"x64\" is_debug=false rtc_include_tests=false enable_iterator_debugging=true use_custom_libcxx = false use_rtti=true is_component_build=false is_clang=true proprietary_codecs=true rtc_use_h264=true rtc_libvpx_build_vp9=true  ffmpeg_branding=\"Chrome\" rtc_build_ssl=true treat_warnings_as_errors=false" --ide=vs2019

4、编译时候显示 ‘ninja.exe’ 不是内部或外部命令,也不是可运行的程序

​ 用everthing 查找下 ninja.exe,把路径添加到 系统环境变量PATH中

​ 重启编译工具,编译webrtc

5、ERROR at //build/timestamp.gni:31:19: Script returned non-zero exit code.

​ 代表缺少:LASTCHNGE

​ 在src目录下执行

​ git config --global --add safe.directory D:/webrtc/src/build

​ 再执行python生产LASTCHANGE

​ python3 build/util/lastchange.py build/util/LASTCHANGE

6、Exception: Path “C:\Program Files (x86)\Windows Kits\10\include\10.0.20348.0\shared” from environment variable “include” does not exist. Make sure the necessary SDK is installed.
ERROR at //build/toolchain/win/toolchain.gni:500:24: Script returned non-zero exit code.
win_toolchain_data = exec_script(“//build/toolchain/win/setup_toolchain.py”,

安装SDK 20348

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/22368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Potsdam、Toronto、Vaihingen数据集

Potsdam、Toronto、Vaihingen数据集 前言原始数据集详情 Vaihingen是一个相对较小的村庄,有许多独立的建筑和小的多层建筑。 标签类别对照表 前言 原始数据集详情 Vaihingen是一个相对较小的村庄,有许多独立的建筑和小的多层建筑。 KeyValue卫星类型未…

【数据结构】穿梭在二叉树的时间隧道:顺序存储的实现

专栏引入 哈喽大家好,我是野生的编程萌新,首先感谢大家的观看。数据结构的学习者大多有这样的想法:数据结构很重要,一定要学好,但数据结构比较抽象,有些算法理解起来很困难,学的很累。我想让大家…

CDN(Content Delivery Network)内容分发网络原理、组成、访问过程、动静态加速、作用详解

CDN简介 什么是CND CDN(Content Delivery Network)的缩写,是一种利用分布式节点技术,在全球部署服务器,即时地将网站、应用视频、音频等静态或动态资源内容分发到用户所在的最近节点,提高用户访问这些内容…

.Net 基于MiniExcel的导入功能接口示例

/// <summary>/// 导入/// </summary>/// <param name"formFile"></param>/// <returns></returns>[HttpPost("Import")]public async Task<ExecResult> Import(IFormFile formFile){try{if (formFile null) t…

PDF分页处理:技术与实践

引言 在数字化办公和学习中&#xff0c;PDF文件因其便携性和格式稳定性而广受欢迎。然而&#xff0c;处理大型PDF文件时&#xff0c;我们经常需要将其拆分成单独的页面&#xff0c;以便于管理和分享。本文将探讨如何使用Python编程语言和一些流行的库来实现PDF文件的分页处理。…

管道液位传感器在蒸汽清洗机的应用

管道光电液位传感器采用了先进的光学感应原理&#xff0c;无需机械运动&#xff0c;具有长久的寿命和稳定的性能。与传统的机械式和电容式传感器相比&#xff0c;管道光电液位传感器具有更高的精度和可靠性&#xff0c;解决了机械式传感器容易卡死失效和电容式传感器感度衰减的…

Linux 命令:head

1. 写在前面 本文主要介绍 Linux head 命令&#xff1a;可用于查看文件的开头部分的内容&#xff0c;有一个常用的参数 -n 用于显示行数&#xff0c;默认为 10&#xff0c;即显示 10 行的内容。 关注 公众号 获取最新博文&#xff1a; 滑翔的纸飞机 2. head 命令 head 命令的…

AI 算法的特性

AI 算法的特性 AI 算法的特性包括&#xff1a; 自主学习&#xff08;Autonomous Learning&#xff09;&#xff1a;AI 算法能够通过大量的数据进行学习和训练&#xff0c;从而不断提升自己的性能和准确度。 适应性&#xff08;Adaptability&#xff09;&#xff1a;AI 算法能…

《被讨厌的勇气》笔记

自由就是被别人讨厌。对人而言&#xff0c;最大的不幸就是不喜欢自己。活在“如果怎样怎样”之类的假设之中&#xff0c;就根本无法改变。活在害怕关系破裂的恐惧之中&#xff0c;那是为他人而活的一种不自由的生活方式。人生是连续刹那&#xff0c;我们只能活在“此时此刻”。…

数据结构之初始泛型

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;数据结构&#xff08;Java版&#xff09; 目录 深入了解包装类 包装类的由来 装箱与拆箱 面试题 泛型 泛型的语法与使用…

springboot+elementui健康饮食系统

此系统是springboot健康饮食管理平台 得简化版&#xff0c;适合期末大作业 系统包括 管理员端和用户端 1.用户端注册即可登录到用户端&#xff0c;用户端包括首页轮播图&#xff0c;以及个人中心&#xff0c;个人信息修改&#xff0c;头像修改&#xff0c;后台根据用户信息&am…

Linux压测

目录 CPU压测 内存压测 本文主要是编写了shell脚本&#xff0c;对Linux系统进行CPU和内存的压测。 CPU压测 [rootlocalhost ~]# cat cpu_stress_test.sh #!/bin/bash # 定义压测CPU的函数 function test_cpu() { # 初始化时间变量 local time # 获取参数 while geto…

构造+割点,F2. Spanning Tree with One Fixed Degree

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1133F2 - Codeforces 二、解题报告 1、思路分析 考虑以根节点为割点&#xff0c;会有若干个连通块 连通块的数目为根节点至少要连出去的边&#xff0c;不妨记为mi 如果mi > D&#xff0c;那…

mysql终端使用中的错误

在这个过程中&#xff0c;出现了几个问题&#xff1a; 在退出 MySQL 后&#xff0c;你尝试再次使用 mysql 命令登录&#xff0c;但系统提示找不到该命令。这可能是因为 MySQL 的执行文件路径没有加入到系统的环境变量中。你可以尝试使用绝对路径来运行 mysql 命令&#xff0c;或…

mac环境基于llama3和metaGPT自动开发2048游戏

1.准备虚拟环境 conda create -n metagpt python3.9 && conda activate metagpt 2.安装metagpt pip install --upgrade metagpt 3.初始化配置文件 metagpt --init-config 4. 安装llama3 5. 修改配置文件 6.让metegpt自动开发2048游戏 7.经过多轮迭代&#xff0c;最终…

Prisma是什么:现代数据库工具和ORM

Prisma是什么&#xff1a;现代数据库工具和ORM 引言 Prisma 是一个流行的开源数据库工具和对象关系映射&#xff08;ORM&#xff09;系统&#xff0c;用于帮助开发者以类型安全的方式与数据库进行交互。它提供了一套丰富的功能&#xff0c;包括数据库建模、迁移管理、数据访问…

个人网站建设方案书

个人网站建设方案书 一、项目背景 随着互联网的迅猛发展&#xff0c;个人网站已经成为展示个人能力、情感表达的重要平台。无论是个人品牌推广&#xff0c;还是个人作品展示&#xff0c;个人网站都能够为个人提供一个独特的展示空间。因此&#xff0c;建设一个个人网站已经成为…

Kotlin 运算符重载

文章目录 运算符函数运算符函数重载 运算符函数 我们平时使用的、-、、[]等运算符其实是以函数&#xff08;成员函数或扩展函数&#xff09;的形式实现的。对应的符号有对应的函数名&#xff0c;并且需要以operator标记。 operator fun 函数名()[: 返回值类型] [函数体]运算符…

JavaScript 中的 NaN

定义 NaN是一个特殊的数字值&#xff08;typeof NaN的结果为number&#xff09;&#xff0c;是not a number的缩写&#xff0c;表示不是一个合法的数字。 注意点 NaN最大的怪癖是唯一一个和自身不相等的值 NaN NaN // false 如何辨别NaN isNaN() 是一个全局方法&#x…

四个初始化 JavaScript Array数组方法及性能对比

Hi&#xff0c;这里是松桑&#xff0c;每天学习一个 JS 片段&#xff0c;涨涨&#x1f9c0;&#xff01;今天带来的是四个初始化 JavaScript Array数组方法。 在 JavaScript 中初始化数组是常见的场景&#xff0c;初始化有多种方法&#xff0c;创建性能也有差异。虽然可能没有一…