从零开始:在 Windows 环境下拉取并编译 Chrome 源码全纪录

编译 Chromium(Chrome 浏览器)源码是一个复杂但非常有趣的过程。你可以从头开始构建自己的浏览器,并对其进行定制,调试或优化。下面是 Windows 平台下,如何获取 Chromium 的源码并进行编译构建的详细步骤。


一、系统要求

在开始之前,确保你的计算机满足以下系统要求:

  • 操作系统:Windows 10 或更高版本。

  • 硬件要求

    • 至少 8GB 内存 ,推荐 16GB 或更多

    • 至少 100GB 可用硬盘空间(NTFS 格式,FAT32 格式不可用)。

    • 64 位处理器

  • 必需工具

    • Visual Studio 2022 (版本 >= 17.0.0)用于编译,并且需要安装 Desktop development with C++ 组件。

    • Windows 11 SDK(版本 10.0.26100.4654)及其调试工具。


二、设置 Visual Studio
  1. 安装 Visual Studio 2022

    • 下载并安装 Visual Studio 2022 ,确保选择了 Desktop development with C++ 组件和 MFC/ATL support

    • 你可以通过命令行安装 Visual Studio:

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

  2. Windows SDK 和调试工具

    • 安装 Windows 11 SDK,版本号为 10.0.26100.4654。

    • 如果使用 ARM64 进行编译,还需要手动安装调试工具。

  3. 安装调试工具

    • 如果 SDK 中没有包含调试工具,可以去 Control Panel > Programs and Features > Windows Software Development Kit 安装调试工具。

三、安装 Git 和 Depot Tools
  1. 安装 Git

  2. 更新 Git

    • 更新现有的 Git 安装,通过以下命令:

      git update-git-for-windows

  3. 命令行设置临时代理

    set http_proxy=http://10.16.13.18:8080

    set https_proxy=http://10.16.13.18:8080

    netsh winhttp set proxy 10.16.13.18:8080

    cpp 复制代码
    当前的 WinHTTP 代理服务器设置:
    
        代理服务器: 10.16.13.18:8080
    
        绕过列表 : (无)
  4. 安装 Depot Tools

    • depot_tools 是 Chromium 构建系统的核心工具。克隆 depot_tools 仓库到指定目录,例如:

      $ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git C:\src\depot_tools

    可能的报错

    cpp 复制代码
    报错一
    
    git clone ssh://git@chromium.googlesource.com/chromium/tools/depot_tools.git
    Cloning into 'depot_tools'...
    ssh: connect to host chromium.googlesource.com port 22: Network is unreachable
    fatal: Could not read from remote repository.
    Please make sure you have the correct access rights
    and the repository exists.
    
    原因是 SSH 协议默认走 22 端口,而你现在在公司网络或通过 HTTP 代理访问,端口 22 被阻断。即使你设置了 http_proxy/https_proxy 和 WinHTTP 代理,SSH 不会走 HTTP 代理,所以无法连接。
    
    
    解决方法
    方案 1:用 HTTPS 克隆 depot_tools(推荐)
    git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
    - HTTPS 可以通过你已经设置的 HTTP 代理访问。
    - 如果公司网络限制了 HTTPS,需要确保代理能访问外网。
    
    方案 2:SSH + 代理(复杂,不建议)
    - 需要配置 ProxyCommand 或 corkscrew 让 SSH 走 HTTP 代理。
    - 在 Windows 下比较麻烦,一般只在必须用 SSH 权限操作私有仓库时用。
    
    
    
    报错二
    
    git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
    Cloning into 'depot_tools'...
    fatal: unable to access 'https://chromium.googlesource.com/chromium/tools/depot_tools.git/': schannel: next InitializeSecurityContext failed: Unknown error (0x80092013)
    
    报错2需要执行即可
    git config --global http.sslBackend "openssl"
    
    完成后配置环境变量
    D:\work\code\SE_AI_Chrome_143\depot_tools 加到path里面,重新启动cmd
    • 垃圾玩意删不掉
  5. 配置环境变量

    • depot_tools 添加到系统的 PATH 环境变量中(确保它在 Python 之前)重启cmd。

    • 在环境变量中添加:

      DEPOT_TOOLS_WIN_TOOLCHAIN=0

    • where gclient看下是不是第一个,下图就没问题

  6. 运行 gclient

    • 安装所有 Windows 特定的依赖:

      $ gclient


四、获取 Chromium 源码
  1. 配置 Git

    配置 Git 用户名和电子邮件:

    cpp 复制代码
    $ 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
  2. 创建 Chromium 目录并获取源码

    创建一个新的目录并切换到该目录:

    $ mkdir chromium && cd chromium

    使用 fetch 命令下载 Chromium 的代码及其依赖:

    $ fetch chromium

    如果你不需要完整的历史记录,可以加上 --no-history 参数来加速下载:

    $ fetch chromium --no-history

  3. 可能的报错

  4. 同步子仓库

    如果获取过程中出现错误,可以运行以下命令来同步所有子仓库:

    $ gclient sync


五、设置构建目录
  1. 生成构建文件

    使用 GN(Google's build system)来生成 Ninja 构建文件。首先,在 src 目录下创建构建目录:

    $ cd src $ gn gen out\Default

    这将生成用于构建 Chromium 的 out/Default 目录。

  2. 可能的问题

  3. 构建 Chromium

    使用 autoninja 来执行构建:

    $ autoninja -C out\Default chrome

    autoninjaninja 的一个包装工具,自动提供最优的参数设置。


六、加速构建
  1. 硬件优化

    • 将构建目录存放在 SSD 硬盘上,以提高读写速度。

    • 使用多核 CPU(20 核以上)和大量内存(64 GB 以上)可以显著提高构建速度。

  2. 配置 gn 参数以优化构建时间

    gn args out\Default --args="is_component_build=true is_debug=true"

  3. 禁用防病毒软件和文件系统索引

    • 确保防病毒软件不会扫描构建目录,尤其是在使用 Windows Defender 时。

七、运行 Chromium

编译完成后,你可以运行 Chromium 浏览器:

$ out\Default\chrome.exe

如果使用 Visual Studio 调试,你可以直接从 IDE 中启动。


八、运行测试

如果你想运行测试,可以使用以下命令:

$ autoninja -C out\Default unit_tests

运行测试时,你还可以指定过滤器来选择特定的测试:

$ out\Default\unit_tests.exe --gtest_filter="BrowserListUnitTest.*"


九、构建安装程序

如果你想构建一个完整的安装程序(包含所有必要的文件),可以使用以下命令:

$ autoninja -C out\Default mini_installer


十、更新你的源码

当你需要更新源码时,可以运行以下命令:

$ git rebase-update $ gclient sync -D

git rebase-update 会更新主 Chromium 仓库,并将本地分支移到最新的提交。gclient sync -D 会同步所有子仓库并删除不再需要的部分。


总结

编译和构建 Chromium 浏览器需要一些时间和系统资源,但按照上述步骤,你可以顺利地在 Windows 平台上完成这一过程。通过配置适当的硬件和构建参数,你可以加速编译,并开始调试和自定义 Chromium 源码。

相关推荐
优雅的潮叭8 分钟前
c++ 学习笔记之 shared_ptr
c++·笔记·学习
SunkingYang16 分钟前
QT中使用Lambda表达式作为槽函数用法,以及捕获列表和参数列表用法与区别
c++·qt·用法·lambda表达式·捕获列表·槽函数·参数列表
微露清风37 分钟前
系统性学习C++-第二十二讲-C++11
java·c++·学习
代码村新手2 小时前
C++-类和对象(中)
java·开发语言·c++
Ccjf酷儿3 小时前
C++语言程序设计 (郑莉)第十章 泛型程序设计与C++标准模板库
开发语言·c++
love530love3 小时前
ComfyUI Hunyuan-3D-2 插件安装问题解决方案
人工智能·windows·python·3d·comfyui·hunyuan-3d-2·pygit2
菩提树下的凡夫4 小时前
基于windows X64 NVIDA显卡的onnxruntime环境下GPU加速C++部署教程
windows
取个名字太难了a4 小时前
用户 APC 的执行过程(下)
windows
明洞日记6 小时前
【CUDA手册002】CUDA 基础执行模型:写出第一个正确的 Kernel
c++·图像处理·算法·ai·图形渲染·gpu·cuda
我想发发发6 小时前
已经安装了ROS环境却还是报错`ModuleNotFoundError: No module named ‘rclpy‘`
前端·人工智能·chrome·机器人