如何编译 Chromium
关于 Chromium
Chromium 是 Google 为发展浏览器 Google Chrome 而发布的自由开源软件, 以 BSD 许可协议等数种许可发行. Chromium 与 Google Chrome 共享大部分代码和功能, 但功能和商标之间有一些细微差别.
Google 基于 Chromium 开发 Chrome 浏览器, 后者具有更多功能. 除 Chrome 外, Microsoft Edge 和 Opera 等多种浏览器也基于 Chromium 开发. Chromium 的更新速度很快, 每隔数小时即有新的开发版本发布. 由于新功能会先在 Chromium 上测试, 等待认证后才会应用在 Google Chrome 上, 所以 Chromium 相当于 Google Chrome 的先行版.
Chromium 项目主页: https://www.chromium.org/
Git 仓库地址: https://chromium.googlesource.com/chromium/src.git
分支说明: https://chromiumdash.appspot.com/branches
编译 (针对 Windows 操作系统)
前置系统要求
- 具有至少 8 GB 内存, 强烈建议超过 16 GB
- 硬盘至少有 100 GB 的可用空间, Windows 上尽可能使用 NTFS 格式
- 适当版本的 Visual Studio 和 Windows SDK, 后面会讲
- 系统为 Windows 10 或更高版本
查询相关信息
不要直接使用 git clone
克隆仓库, 而是根使用下文的方法来获取代码
因为编译时依赖的第三方库并不在这个 git 仓库里, 需要使用专用工具来获取
而且, 由于 chromium 的代码量很大, 所以使用 git clone
会很慢, clone 失败也是很常见的事情
用浏览器打开 https://chromium.googlesource.com/chromium/src.git , 在左侧 Tags 列表找到你希望编译的版本的链接
例如, 103.0.5060.66 版本对应的链接就是 https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5060.66
根据指引, 最终找到 Windows 平台的构建说明页面: https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5060.66/docs/windows_build_instructions.md
因为不同的 tag 对 Visual Studio 和 Windows SDK 的版本要求可能不一样, 所以我们必须找到对应版本的编译说明页面
安装必要工具链
Visual Studio
需要安装 Visual Studio 2017 (>=15.7.2), 可以使用 Visual Studio 2019 (>=16.0.0) 推荐 Visual Studio 2022, 有时 VS 版本太高了也不行, 例如 Chromium 95 的编译不能用 VS2022
我自己安装的是 Visual Studio 2022 Enterprise, 下载地址: https://visualstudio.microsoft.com/downloads/
安装的时候, 左侧工作负荷中勾选 使用 C++ 的桌面开发
, 右侧勾选 C++ ATL
生成工具 (全名可能是 适用于最新v143生成工具的 C++ ATL ...
), 其他项默认就可以了, 若系统分区空间有限的, 可以调整 Visual Studio 安装位置
安装完成后请记得配置系统环境变量
变量名: vs2022_install
变量值: <你 VS 的安装位置>
其中,
变量名可选 vs2017_install
或 vs2019_install
或 vs2022_install
, 根据你安装的 Visual Studio 版本来定
<你 VS 的安装位置> 形如: C:\Program Files\Microsoft Visual Studio\2022\Enterprise
Windows SDK
页面中要求安装 10.0.20348.0 这个版本的 Windows SDK, 下载地址是: https://developer.microsoft.com/windows/downloads/sdk-archive/
注意, 别下载错了, 必须安装指定版本的 SDK, 低了高了都不行!
安装的时候, 直接选默认项就行了, 确保勾选了 “Debugging Tools For Windows”
安装完成后记得设置环境变量
变量名: WINDOWSSDKDIR
变量值: <你 Windows SDK 的安装位置>
其中,
<你 Windows SDK 的安装位置> 形如: C:\Program Files (x86)\Windows Kits\10
depot_tools
depot_tools 是 Chromium 项目的辅助工具, 包含了一些用于获取代码, 编译代码的脚本
下载地址 https://storage.googleapis.com/chrome-infra/depot_tools.zip, 将其解压至某个目录
注意: 不要使用鼠标拖拽或复制粘贴, 否则其中 .git 目录可能不会正常复制过来, 请使用 zip 压缩包管理工具直接解压到目标目录
解压完成后, 将 depot_tools 目录添加到 PATH 环境变量. 确保要在你已经安装的 git 和 python 前面, 因为 depot_tools 内置了 git 和 python 包. 为了省事, 我直接把它放到最前面
当然, 是否要覆盖掉系统自带的 git 和 python, 这个取决于你自己, 一般来说也不会出现问题
还需要再添加一个环境变量 DEPOT_TOOLS_WIN_TOOLCHAIN
, 其值为 0, 作用是让 depot_tools 使用本地安装的 Visual Studio 版本 (默认情况下, depot_tools 将尝试使用 google 内部版本)
取得源代码并编译
若要使用代理, 请执行以下代码 (仅在当前命令行窗口有效)
若要永久使用代理, 请将代理链接添加到系统环境变量中
1 | set http_proxy=<proxy> |
其中, <proxy>
为你的代理链接地址
接下来, 在 depot_tools 目录下 (最好), 执行 gclient
命令初始化 (这个命令仅用执行一次)
此处假定你已经配置好了 git 选项, 例如你的用户名和邮箱, 否则请先配置
1 | 配置git用户名和email, 如已配置请跳过 |
接下来切换到你准备存储源代码与编译产物的目录, 执行以下命令
1 | mkdir chromium && cd chromium |
--depth 100
意思是拉取深度为100, 这将会拉取一些 log, 因为编译脚本会基于仓库的 log 反查版本发布时间. 如果这个值太小, 可能会查不到, 因而报错. 所以, 建议设为 100 或更大些. 或者, 直接去掉这个参数, 但这样将拉取全部的 log, 特别慢.-b 103.0.5060.66
指定拉取的 tag 版本, 如果不想编译指定版本可以直接拉取最新代码
拉取完成后, 执行以下命令来生成 .gclient 文件
1 | gclient config --unmanaged https://chromium.googlesource.com/chromium/src.git |
接下来, 执行以下命令来拉取所有第三方依赖
1 | gclient sync |
等同于
1 | gclient sync --nohooks |
执行指令后, 要下载几个 G 的依赖包, 比较慢, 窗口也会输出 "Still working on"
的提示, 防止假死被误关
根据自身网络环境不同, 下载完成可能需要几个小时, 请耐心等待. 如果执行意外中断, 可以重复执行上述指令继续下载
进入 chromium/src
目录编译
1 | gn gen out\Default |
该命令生成调试版的 chromium 浏览器, 持续时间可能会比较长, 请耐心等待
若中途意外中断, 可以使用 autoninja -C out\Default chrome
命令继续编译
生成完成后可以运行 src\out\Default\chrome.exe
来启动 chromium, 关于中显示为开发者内部版本
若要编译正式版浏览器, 仍然进入 src
目录
执行
1 | gn args out\Release |
弹出一个记事本文件编辑框, 让我们输入编译参数, 填写:
1 | target_os="win" |
保存后会报错, 根据提示再 .gclient
文件中添加配置项 "checkout_pgo_profiles": True
然后执行 gclient runhooks
拉取依赖, 完成后, 重新执行 gn args out\Release
最后, 执行 autoninja -C out\Release mini_installer
编译.
可在 out\Release\mini_installer.exe
得到安装程序