windows编译chromium过无限debugger

下载源码

温馨提示: 国内网络可能不稳定,需要世界可及的网络,不然百分百下载失败

安装vs2022

下载链接:https://visualstudio.microsoft.com/zh-hans/vs/

Community 2022社区版,安装时勾选使用C++的桌面开发,然后右侧再勾选一个适用于最新 v143 生成工具的 C++ MFC(x8...,点击安装。你也可以修改安装路径,我一般都是不改的。

windows编译chromium过无限debugger

Windows SDK用默认的就行,不需要额外勾选。

打开控制面板程序程序和功能,Windows11可以在路径输入这个回车就会打开windows编译chromium过无限debugger

接着右键你安装的Windows SDK,选择更改,随着时间的变化版本可能不一样,这个无所谓windows编译chromium过无限debugger

接着点Nextwindows编译chromium过无限debugger

勾选Debugging Tools for Windows,然后点击Change,我这里已经安装过了windows编译chromium过无限debugger

安装depot_tools

下载链接: https://storage.googleapis.com/chrome-infra/depot_tools.zip

下载下来解压,然后将路径配置到环境变量里就算安装完成了,这里有一个需要注意的点: 该路径需要放在其他Python路径之前。也就是说得保证你在命令行运行python3时获取到的是depot_tools里面,可以使用where python3来查看顺序windows编译chromium过无限debugger

再添加一个DEPOT_TOOLS_WIN_TOOLCHAIN环境变量,并设置值为0。这会告诉depot_tools使用本地安装的vs2022,不然他会去使用Google内部版本,会报错windows编译chromium过无限debugger

更新depot_tools

编译和下载最好都在cmd下执行,不要用powershell,可能会有奇奇怪怪的问题。

设置代理,

临时

set http_proxy=http://127.0.0.1:10809
set https_proxy=http://127.0.0.1:10809

永久

git config --global http.proxy http://127.0.0.1:10809
git config --global https.proxy http://127.0.0.1:10809

然后输入gclient就会更新depot_tools

set是设置当前命令行的环境变量,是临时的,这个cmd关闭就会失效。而git config --global则是设置全局git使用的代理,永久生效的,所以下载完源码需要通过下面的命令删除

git config --global --unset https.proxy
git config --global --unset http.proxy

下载和配置git

下载就不提了,运行下面的命令配置下

git config --global user.name "My Name"
git config --global user.email "my-name@chromium.org"
git config --global core.autocrlf false
git config --global core.filemode false
git config --global branch.autosetuprebase always
git config --global core.longpaths true

开始下载源码

新建一个文件夹用来存放源码,比如我的目录就以版本号命名120.0.6099.72,全部的版本号列表请看: https://chromiumdash.appspot.com/releases?platform=Windows

源码总共不到20G,加上编译的文件留个100G应该足够了

生成gclient文件,D:chromium_git_cache是设置缓存文件的目录,也可以不设置gclient config --cache-dir D:chromium_git_cache https://chromium.googlesource.com/chromium/src.git

然后开始同步源码gclient sync --revision src@120.0.6099.72 --with_tags --with_branch_heads

错误1

>error:RPC failed; curl 92 HTTP/2 stream 3 was not closed cleanly before end of the underlyingstreamn

这个是应该网络不稳定造成的,重新运行同步源码的命令即可

windows编译chromium过无限debugger

错误2

windows编译chromium过无限debugger

这个错误我按它的提示设置NO_AUTH_BOTO_CONFIG环境变量并没有解决,先说下步骤:

新建个proxy.boto文件,内容填下面的,也就是你代理的地址和端口

[Boto]
proxy = 127.0.0.1
proxy_port = 10809
proxy_type = http

然后设置环境变量:

set NO_AUTH_BOTO_CONFIG=D:proxy.boto

重新运行源码还是报这个错误,但是警告消失了。搜了一下,还是网络问题,我将代理设置成全局模式再同步就成功了

后面就是漫长的下载源码的时间:windows编译chromium过无限debugger

编译源码

cd到src目录,然后运行gn gen outDefault就会在outDefault目录生成编译需要的文件

然后运行autoninja -C outDefault chrome,后面就能看到14988.610秒后编译完成了windows编译chromium过无限debugger

期间会一直抛出一个Python异常,测试用set PYTHONUTF8=1全局utf-8也不行,有的编码不是utf-8,所以别管它就行, 只要能编译完成而且能运行就当它是警告

gn gen的一些命令行参数,通过传递参数可以减小编译的时间:

  • is_component_build = true– 这会使用更多、更小的 DLL,并且可以避免在每次更改后重新链接 chrome.dll。
  • enable_nacl = false– 这将禁用本地构建通常不需要的 Native Client。
  • target_cpu = "x86"- x86 版本可能比 x64 版本略快。请注意,如果您设置了此项但未设置,则构建时间可能会变得更糟。enable_nacl = false
  • blink_symbol_level = 0– 关闭 Blink 的源代码级调试以减少构建时间,如果您不打算调试 Blink,则适用。
  • v8_symbol_level = 0– 关闭 V8 的源代码级调试以减少构建时间,如果您不打算调试 V8,则适用。

我看b站大佬的视频,还指定了两个参数proprietary_codecs = true ffmpeg_branding = "Chrome",应该是和视频编解码相关的。

然后生成编译文件的命令,这里先编译x86版本:gn gen out/chromium_debug_x86 --args="is_debug = true is_component_build = true enable_nacl = false target_cpu = "x86" proprietary_codecs = true ffmpeg_branding = "Chrome""

然后编译: autoninja -C out/chromium_debug_x86 chrome

使用vs2022编译

gn gen 生成时指定--ide=vs2022就可以生成vs2022的项目文件,可以使用vs2022打开项目然后编译。项目文件名叫all.sln,这个名称可以在生成项目的时候指定,不过应该没啥必要

windows编译chromium过无限debugger

gn gen --ide=vs2022 --ninja-executable=E:120.0.6099.72srcthird_partyninjaninja.exe out/debug_x86 --args="is_debug = true is_component_build = true enable_nacl = false target_cpu = "x86" proprietary_codecs = true ffmpeg_branding = "Chrome""

vs2022要以管理员权限运行,不然会有个奇怪的问题: Failed to retrieve existing ACLs for directory。问了chatgpt说是权限问题,试了下管理员权限运行确实编译正常了

错误1

windows编译chromium过无限debugger

这个错误很奇怪,我怀疑是代码不全。重新同步一次源码后就正常了

错误2

obj/build/rust/tests/test_rlib_crate/test_rlib_crate_associated_bin_test_rlib_crate_associated_bin_vunknown_build_script_win_clang_x86_for_rust_host_build_tools.vcxproj.filters: 系统找不到指定的路径。 (0x3)
ERROR Unable to write file.
windows编译chromium过无限debugger

这个错误是因为路径超过了WIndows限制的最大字符长度(260), 我复制图中的路径看了下正好260个字符,那可以把路径名改短一点。比如把out/chromium_debug_x86改成out/debug_x86。在运行就正常了

当然你也可以通过修改注册表来增加路径的最大字符限制,这就自行百度了,我就不测试了。

编译成安装包

要查看所有的args参数,可以使用gn args --list out/release_x86 > E:gn_args.txt,因为很长就重定向到文件里了,文件大小两百多K

要编译成安装包首先得去掉调试符号,不然编译出来的exe非常的大gn gen out/release_x86 --args="is_debug = false is_official_build = true enable_nacl = false chrome_pgo_phase = 0 target_cpu = "x86" proprietary_codecs = true ffmpeg_branding = "Chrome""

先编译autoninja -C out/release_x86 chrome再打包ninja -C out/release_x86 mini_installer

打包完成后会得到一个mini_installer.exe文件,这个就是完整的安装包。也可以使用chrome.packed.7zchrome.7z这两个文件,chrome.packed.7z解压后就是chrome.7z,chrome.7z解压后可以作为绿色版直接打开。mini_installer.exe解压后也是chrome.7z

错误1

windows编译chromium过无限debugger

使用下面的命令手动下载(未成功), 依旧缺少文件,或者使用chrome_pgo_phase = 0参数禁用pgo,我用的这个方法

python3 E:120.0.6099.72srctoolsupdate_pgo_profiles.py --target=win32 update --gs-url-base=chromium-optimization-profiles/pgo_profiles

过无限debugger

根据无限debugger通杀方案——定制chromium修改源码,然后重新编译即可。测试下来并没有什么坑。编译好后debugger不会触发断点,而且也不影响自己在F12打的断点。

需要已经编译好的浏览器请在公众号后台回复debugger

参考

  • windows编译chromium官方文档: https://chromium.googlesource.com/chromium/src/+/main/docs/windows_build_instructions.md
  • 下载chromium指定版本(下面b站大佬给的方法更好用): https://stackoverflow.com/questions/47087970/how-to-checkout-and-build-specific-chromium-tag-branch-without-download-the-full/47093174#47093174
  • 下载和编译chromium的视频: https://www.bilibili.com/video/BV1rY411D7fy
  • chromium编译步骤(这个说的也很详细): https://www.wmzos.com/?id=51
  • 禁用pgo: https://www.programminghunter.com/article/60482208289/
  • windows下编译cef最新版本,让Chromium支持音频视频mp3mp4: https://www.moguf.com/post/wincefbuild
  • 无限debugger通杀方案——定制chromium: https://blog.csdn.net/qq_43572758/article/details/134399490


原文始发于微信公众号(Python成长路):windows编译chromium过无限debugger

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/284978.html

(0)
葫芦侠五楼的头像葫芦侠五楼

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!