日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

Windows 平台编译 WebRTC

發(fā)布時(shí)間:2024/4/11 windows 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows 平台编译 WebRTC 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Windows 平臺(tái)編譯 WebRTC 的過(guò)程,包括安裝依賴的開發(fā)工具等,主要要參考 chromium 瀏覽器的 Windows 平臺(tái)編譯文檔,Checking out and Building Chromium for Windows。這里編譯 WebRTC 的 M96 版。

系統(tǒng)要求

  • 具有至少 8GB 內(nèi)存的 64 位 Intel 機(jī)器。強(qiáng)烈建議內(nèi)存大于 16GB。
  • 至少 100GB 的空余磁盤空間,且用 NTFS 格式化的分區(qū)。不能用 FAT32,因?yàn)槟承?Git 打包文件可能大于 4GB。
  • 一個(gè)合適版本的 Visual Studio,如下面的描述。
  • Windows 10 或更新的 Windows 系統(tǒng)。

設(shè)置 Windows

Visual Studio

Chromium/WebRTC 需要 Visual Studio 2017 (>=15.7.2) 來(lái)編譯,但 Visual Studio 2019 (>=16.0.0) 更好。 Visual Studio 也可以被用于調(diào)試 Chromium,但版本 2019 更好是由于它處理 Chromium 巨大的調(diào)試信息做的更好。盡管使用了 clang-cl 編譯器,但 Visual Studio 的頭文件、庫(kù),及一些工具會(huì)被用到。如果 Visual Studio 社區(qū)版Visual Studio Community Edition 的許可證合適,用它就可以了。

在 Visual Studio 官網(wǎng) 可以找到下載頁(yè)面,在最新版的下載信息左下角有個(gè) “發(fā)行說(shuō)明”:

點(diǎn)開 “發(fā)行說(shuō)明”,可以看到所有版本的發(fā)行說(shuō)明:

點(diǎn)開 Visual Studio 2019 的 “當(dāng)前發(fā)行說(shuō)明” 頁(yè)可以看到 Visual Studio 2019 的下載地址:

必須安裝 “Desktop development with C++” 組件,及 “MFC/ATL support” 子組件。這可以通過(guò)在命令行上給 Visual Studio 安裝器傳遞參數(shù)來(lái)實(shí)現(xiàn)(參考下面 ARM64 指導(dǎo)):

$ PATH_TO_INSTALLER.EXE ^ --add Microsoft.VisualStudio.Workload.NativeDesktop ^ --add Microsoft.VisualStudio.Component.VC.ATLMFC ^ --includeRecommended

如果想要給 ARM64 Win32 編譯,則需要一些額外的參數(shù)。完整的命令行參數(shù)如下:

$ PATH_TO_INSTALLER.EXE ^ --add Microsoft.VisualStudio.Workload.NativeDesktop ^ --add Microsoft.VisualStudio.Component.VC.ATLMFC ^ --add Microsoft.VisualStudio.Component.VC.Tools.ARM64 ^ --add Microsoft.VisualStudio.Component.VC.MFC.ARM64 ^ --includeRecommended

還必須安裝版本 10.0.19041 或更高版本的 Windows 10 SDK。這可以通過(guò)單獨(dú)安裝,或選中 Visual Studio Installer 中適當(dāng)?shù)倪x項(xiàng)來(lái)實(shí)現(xiàn)。如我們上面下載的 Visual Studio 2019 社區(qū)版的安裝器為 vs_community__de2da9e0d3114609b6724eaa8f0e96c4.exe,打開 Windows PowerShell,切換到安裝器的下載目錄,并輸入如下命令:

PS D:\Users\asdfgh\Downloads> ./vs_community__de2da9e0d3114609b6724eaa8f0e96c4.exe --add Microsoft.VisualStudio.Workload.NativeDesktop --add Microsoft.VisualStudio.Component.VC.ATLMFC --add Microsoft.VisualStudio.Component.VC.Tools.ARM64 --add Microsoft.VisualStudio.Component.VC.MFC.ARM64 --includeRecommended

打開 Visual Studio Installer,選中所有需要安裝的依賴:

我這里安裝了 “Desktop development with C++” 組件下的所有子組件,包括各種版本的 Windows 10 SDK:

將 Visual Studio 安裝在 C: 盤是一個(gè)比較方便的選擇,但一般來(lái)說(shuō),C: 盤空間比較有限,我這里將 Visual Studio 安裝在了 D: 盤。這種安裝位置的非默認(rèn)安裝位置的改變,后面需要專門做一些額外的配置。

SDK Debugging Tools 也必須安裝。如果 Windows 10 SDK 是通過(guò) Visual Studio installer 安裝的,則可以通過(guò)如下步驟安裝:控制面板 → 程序 → 程序和功能 → 選擇 “Windows Software Development Kit” (對(duì)應(yīng)版本) → 鼠標(biāo)右鍵單擊,選擇 “更改” → 更改 → 選中 “Debugging Tools For Windows” → Change。或者也可以下載單獨(dú)的 SDK 安裝器并使用它安裝 Debugging Tools。

安裝 depot_tools

下載 depot_tools 包 并將它解壓到某個(gè)位置。

警告:不要 使用 drag-n-drop 或從 Explorer copy-n-paste,這可能不會(huì)提取隱藏的 “.git” 目錄,這對(duì) depot_tools 自身的自動(dòng)更新是必須的。可以使用 “Extract all…”。

將 depot_tools 的路徑添加到 PATH 環(huán)境變量的前面(必須在安裝的 Python 的路徑的前面)。假設(shè)將 depot_tools 包解壓在了 C:\src\depot_tools,則打開:
右鍵單擊 “此電腦” → 屬性 → 高級(jí)系統(tǒng)設(shè)置 → 環(huán)境變量

如果有管理員權(quán)限,則修改 PATH 環(huán)境變量,并將 C:\src\depot_tools 放在前面(至少也要把它放在安裝了 Python 或 Git 的目錄的前面)。

如果沒(méi)有管理員權(quán)限,可以添加一個(gè)用戶級(jí) PATH 環(huán)境變量,并把 C:\src\depot_tools 放在前面,如果你的系統(tǒng) PATH 環(huán)境變量有 Python 的路徑,就有點(diǎn)背了。

然后,還需要以相同方式添加一個(gè) DEPOT_TOOLS_WIN_TOOLCHAIN 系統(tǒng)環(huán)境變量,并把它設(shè)置為 0。這告訴 depot_tools 使用本地安裝的 Visual Studio 版本(默認(rèn)情況下,depot_tools 將嘗試使用一個(gè) Google 內(nèi)部的版本)。

可能還需要添加環(huán)境變量 vs2017_install 或 vs2019_install 或 vs2022_install 指向安裝的 Visual Studio 2017 或 19 或 22,如對(duì)于 Visual Studio 2019 設(shè)置 set vs2019_install=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional,對(duì)于 Visual Studio 2022 設(shè)置 set vs2022_install=C:\Program Files\Microsoft Visual Studio\2022\Professional。

然后從 cmd.exe 命令行,運(yùn)行:

$ gclient

在第一次運(yùn)行時(shí),gclient 將會(huì)安裝所有 Windows 特有的與代碼一起工作的東西,包括 msysgit 和 python。

  • 如果從一個(gè) 非 cmd shell (如,cygwin,PowerShell)運(yùn)行 gclient,它可能看上去正常運(yùn)行了,但 msysgit,python 和其它工具可能不會(huì)被正確安裝。
  • 如果你在第一次運(yùn)行 gclient 時(shí)看到了關(guān)于文件系統(tǒng)的奇怪的錯(cuò)誤,可能想要 禁用 Windows Indexing。

獲取代碼

創(chuàng)建一個(gè)工作目錄,在命令行中切換到該目錄,并運(yùn)行 fetch webrtc:

$ mkdir webrtc-checkout $ cd webrtc-checkout $ fetch --nohooks webrtc $ gclient sync

在同步代碼期間,需要接受 Google Play Services SDK 的許可協(xié)議。這個(gè)過(guò)程時(shí)間有點(diǎn)長(zhǎng)。

構(gòu)建

Ninja 是所有平臺(tái)的默認(rèn)構(gòu)建系統(tǒng)。

生成 Ninja 工程文件

Ninja工程文件通過(guò) GN生成,由于我們需要使用 Visual Studio 進(jìn)行代碼編輯調(diào)試等,所以使用 GN 生成 Ninja 工程時(shí)需要配置 --ide=vs 生成 Visual Studio 的工程文件。通過(guò)如下命令生成工程文件(Debug 編譯,工程文件位于out\Default目錄下):

PS D:\> cd .\webrtc\src PS D:\webrtc\src> gn gen --ide=vs out/Default

上面的 vs2017_install 或 vs2019_install 或 vs2022_install 這些環(huán)境變量不設(shè)置的話,這里在執(zhí)行 gn gen 時(shí)會(huì)報(bào)錯(cuò):

PS D:\webrtc\src> gn gen .\out\Default\ Traceback (most recent call last):File "D:/webrtc/src/build/vs_toolchain.py", line 573, in <module>sys.exit(main())File "D:/webrtc/src/build/vs_toolchain.py", line 569, in mainreturn commands[sys.argv[1]](*sys.argv[2:])File "D:/webrtc/src/build/vs_toolchain.py", line 546, in GetToolchainDirruntime_dll_dirs = SetEnvironmentAndGetRuntimeDllDirs()File "D:/webrtc/src/build/vs_toolchain.py", line 106, in SetEnvironmentAndGetRuntimeDllDirsos.environ['GYP_MSVS_OVERRIDE_PATH'] = DetectVisualStudioPath()File "D:/webrtc/src/build/vs_toolchain.py", line 197, in DetectVisualStudioPathversion_as_year = GetVisualStudioVersion()File "D:/webrtc/src/build/vs_toolchain.py", line 186, in GetVisualStudioVersionraise Exception('No supported Visual Studio can be found.' Exception: No supported Visual Studio can be found. Supported versions are: 16.0 (2019), 15.0 (2017). ERROR at //build/config/win/visual_studio_version.gni:27:7: Script returned non-zero exit code.exec_script("../../vs_toolchain.py", [ "get_toolchain_dir" ], "scope")^---------- Current dir: D:/webrtc/src/out/Default/ Command: D:/tools/depot_tools/bootstrap-2@3_8_10_chromium_23_bin/python3/bin/python3.exe D:/webrtc/src/build/vs_toolchain.py get_toolchain_dir Returned 1. See //build/toolchain/win/BUILD.gn:9:1: whence it was imported. import("//build/config/win/visual_studio_version.gni") ^---------------------------------------------------- See //BUILD.gn:30:3: which caused the file to be included.group("default") {^-----------------

GN 構(gòu)建系統(tǒng)的 Python 腳本報(bào)錯(cuò)說(shuō),找不到支持 Visual Studio,報(bào)錯(cuò)的這段 Python 腳本代碼位于 D:/webrtc/src/build/vs_toolchain.py,如:

def GetVisualStudioVersion():"""Return best available version of Visual Studio."""supported_versions = list(MSVS_VERSIONS.keys())# VS installed in depot_tools for Googlersif bool(int(os.environ.get('DEPOT_TOOLS_WIN_TOOLCHAIN', '1'))):return supported_versions[0]# VS installed in system for external developerssupported_versions_str = ', '.join('{} ({})'.format(v,k)for k,v in MSVS_VERSIONS.items())available_versions = []for version in supported_versions:# Checking vs%s_install environment variables.# For example, vs2019_install could have the value# "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community".# Only vs2017_install and vs2019_install are supported.path = os.environ.get('vs%s_install' % version)if path and os.path.exists(path):available_versions.append(version)break# Detecting VS under possible paths.path = os.path.expandvars('%ProgramFiles(x86)%' +'/Microsoft Visual Studio/%s' % version)if path and any(os.path.exists(os.path.join(path, edition))for edition in ('Enterprise', 'Professional', 'Community', 'Preview','BuildTools')):available_versions.append(version)breakif not available_versions:raise Exception('No supported Visual Studio can be found.'' Supported versions are: %s.' % supported_versions_str)return available_versions[0]

構(gòu)建系統(tǒng)的 Python 腳本在不設(shè)置 vs2017_install 或 vs2019_install 或 vs2022_install 這些環(huán)境變量時(shí),會(huì)在 C: 盤找安裝的 Visual Studio,由于我們的 Visual Studio 沒(méi)有安裝在默認(rèn)位置,導(dǎo)致這里報(bào)錯(cuò)。這段代碼也向我們指示了解決這個(gè)問(wèn)題的方法,即設(shè)置 vs2017_install 或 vs2019_install 或 vs2022_install 這些環(huán)境變量中的一個(gè)。

在設(shè)置了環(huán)境變量之后,重啟命令行之后設(shè)置才會(huì)生效。

設(shè)置了 vs2019_install 環(huán)境變量之后,遇到了另外一個(gè)錯(cuò)誤:

PS D:\webrtc\src> gn gen .\out\Default\ Traceback (most recent call last):File "D:/webrtc/src/build/vs_toolchain.py", line 573, in <module>sys.exit(main())File "D:/webrtc/src/build/vs_toolchain.py", line 569, in mainreturn commands[sys.argv[1]](*sys.argv[2:])File "D:/webrtc/src/build/vs_toolchain.py", line 547, in GetToolchainDirwin_sdk_dir = SetEnvironmentAndGetSDKDir()File "D:/webrtc/src/build/vs_toolchain.py", line 540, in SetEnvironmentAndGetSDKDirreturn NormalizePath(os.environ['WINDOWSSDKDIR'])File "D:\tools\depot_tools\bootstrap-2@3_8_10_chromium_23_bin\python3\bin\lib\os.py", line 675, in __getitem__raise KeyError(key) from None KeyError: 'WINDOWSSDKDIR' ERROR at //build/config/win/visual_studio_version.gni:27:7: Script returned non-zero exit code.exec_script("../../vs_toolchain.py", [ "get_toolchain_dir" ], "scope")^---------- Current dir: D:/webrtc/src/out/Default/ Command: D:/tools/depot_tools/bootstrap-2@3_8_10_chromium_23_bin/python3/bin/python3.exe D:/webrtc/src/build/vs_toolchain.py get_toolchain_dir Returned 1. See //build/toolchain/win/BUILD.gn:9:1: whence it was imported. import("//build/config/win/visual_studio_version.gni") ^---------------------------------------------------- See //BUILD.gn:30:3: which caused the file to be included.group("default") {^-----------------

這段報(bào)錯(cuò)是說(shuō),找不到 Windows 10 SDK,這個(gè)報(bào)錯(cuò)也是由于我們?cè)诜菢?biāo)準(zhǔn)位置安裝 Visual Studio 和 Windows 10 SDK 引起的,拋出這段錯(cuò)誤的 Python 腳本代碼同樣位于 D:/webrtc/src/build/vs_toolchain.py:

def SetEnvironmentAndGetSDKDir():"""Gets location information about the current sdk (must have beenpreviously updated by 'update'). This is used for the GN build."""SetEnvironmentAndGetRuntimeDllDirs()# If WINDOWSSDKDIR is not set, search the default SDK path and set it.if not 'WINDOWSSDKDIR' in os.environ:default_sdk_path = os.path.expandvars('%ProgramFiles(x86)%''\\Windows Kits\\10')if os.path.isdir(default_sdk_path):os.environ['WINDOWSSDKDIR'] = default_sdk_pathreturn NormalizePath(os.environ['WINDOWSSDKDIR'])

這段代碼在環(huán)境變量和默認(rèn)的 C: 盤尋找 Windows 10 SDK 的安裝位置,找不到時(shí)就會(huì)報(bào)錯(cuò)。這段代碼告訴我們,應(yīng)該設(shè)置 WINDOWSSDKDIR 環(huán)境變量來(lái)解決這個(gè)問(wèn)題。

如果需要 Release 編譯,通過(guò)如下命令生成工程文件:

PS D:\webrtc\src> gn gen --ide=vs out/Default --args="is_debug=false"

如果不想使用默認(rèn)編譯參數(shù),可以使用 gn args out/Default --list 查看當(dāng)前編譯參數(shù),通過(guò)類似如下方式設(shè)置:

PS D:\webrtc\src> gn gen --ide=vs out/Default --args="use_rtti=true is_clang=false rtc_build_tools=false rtc_include_tests=false rtc_build_examples=false"

gn gen 在 args.gn 文件不存在時(shí),會(huì)生成這個(gè)文件,并將配置參數(shù)寫入這個(gè)文件,隨后生成 ninja 所需的文件。要對(duì)編譯做配置,也可以不在命令行參數(shù)中加這些編譯參數(shù),而是直接改 D:\webrtc\src\out\Default\args.gn 文件,如將文件的內(nèi)容改為下面這樣:

is_debug = true use_rtti=true is_clang=false rtc_build_tools=false rtc_include_tests=false rtc_build_examples=false

編譯

生成工程文件后,就可以在 src 目錄下執(zhí)行編譯命令:

PS D:\webrtc\src> ninja -C .\out\Default\

編譯生成:

用 Visual Studio 2019 打開:

可以通過(guò) Visual Studio 調(diào)試編譯出來(lái)的各種可執(zhí)行文件。

代碼更新

后續(xù)如果需要更新代碼,則可按照如下步驟執(zhí)行:

PS D:\webrtc\src> git checkout master PS D:\webrtc\src> git pull origin master PS D:\webrtc\src> gclient sync

然后參考前面步驟重新生成工程文件,編譯即可。

引用 WebRTC 庫(kù)

WebRTC 編譯后會(huì)在 src\out\Default\obj 目錄下生成整個(gè) WebRTC 工程的靜態(tài)庫(kù):webrtc.lib,鏈接下這個(gè)就可以了,需要的頭文件可以在 src\api 目錄下找。

如果 Visual Studio 應(yīng)用沒(méi)配置 Clang 編譯器,鏈接這個(gè) webrtc.lib,生成工程文件時(shí)需要配置如下參數(shù):gn gen --ide=vs out/Default --args="is_clang=false use_lld=false",禁用 clang 與 lld。

參考文檔:
WebRTC development
Checking out and Building Chromium for Windows
Windows平臺(tái)WebRTC編譯(持續(xù)更新)
Getting Started with WinRTC

Done

總結(jié)

以上是生活随笔為你收集整理的Windows 平台编译 WebRTC的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。