从零开始:在 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 源码。

相关推荐
csdn_aspnet2 小时前
在Windows 11系统中关闭Chrome自动更新
chrome·windows
Dream it possible!2 小时前
LeetCode 面试经典 150_图的广度优先搜索_蛇梯棋(93_909_C++_中等)(广度优选搜索)
c++·leetcode·面试·广度优先
进击的荆棘2 小时前
C++起始之路——类和对象(上)
开发语言·c++
草莓熊Lotso2 小时前
《算法闯关指南:动态规划算法--斐波拉契数列模型》--04.解码方法
c++·人工智能·算法·动态规划
1nv1s1ble2 小时前
[c++] cpp快速添加sqlite_orm
c++·sqlite
John_ToDebug2 小时前
深度解析:SVG、VectorIcon 和 位图图像的区别与优劣势
chrome·windows·图形渲染
陶陶name2 小时前
Metal Compute Pipeline:Metal-C++ 环境配置与简单算子实现
开发语言·c++
凌康ACG2 小时前
Sciter之子线程更新UI(八)
c++·sciter
John_ToDebug3 小时前
浏览器性能优化详解:技术实践与策略
chrome·性能优化