
引言
这是一个特殊的时刻。你已经走过了漫长的准备之路------配置编译工具、掌握版本控制、获取源代码、生成构建文件。现在,所有这一切都汇聚到这一个核心任务:编译。
如果前六篇是在"蓄势待发",那么这一篇就是真正的"临门一脚"。当你按下回车键执行编译命令时,你的电脑将开始一场真正的马拉松:数百万行代码将被解析、优化、编译、链接。你的 CPU 会全速运转,硬盘会持续工作,这个过程可能需要 1-6 小时(取决于你的硬件配置)。
但这个等待是值得的。当编译完成时,你将拥有一个独一无二的成果:由你亲手编译的 Chromium 144 浏览器。这不仅仅是一个程序,更是你对开源软件理解、对大型项目构建流程掌握的实体见证。
本篇将引导你完成这个激动人心的最终步骤。
1 开始编译
1.1 最后的检查
在启动编译前,确保一切就绪:
# 确认你在正确的目录
pwd
# 输出应该是:.../chromium_src/src
# 确认 GN 已成功生成构建文件
ls .\out\Default\build.ninja
# 应该显示文件存在
# 确认 depot_tools 在 PATH 中
where autoninja
# 应该显示 autoninja 的路径
1.2 执行编译命令
现在,启动编译:
autoninja -C .\out\Default chrome
让我们分解这个命令:
- autoninja :depot_tools 提供的智能编译包装工具
- 自动检测你的 CPU 核心数
- 自动设置最优的并行编译参数
- 比手动调用 ninja 更便捷
- -C .\out\Default :指定构建配置目录
- 对应你在第六篇中生成的构建文件位置
- chrome :指定编译目标
- 这会编译完整的 Chrome(Chromium)浏览器
- 也可以编译其他目标如
base、content等
1.3 编译过程与进度
命令执行后,你会看到类似的输出:

优化编译时间的方法:
-
关闭不必要的应用:关闭浏览器、IDE 等占用内存和 CPU 的程序
-
调整电源设置:
确保高性能模式
powercfg /setactive 8c5e7fda-e8bf-45a6-9401-6ceba54cba00
-
临时禁用防病毒软件:实时病毒扫描会大幅降低编译速度
-
使用 SSD:如果可能,将源代码移至 NVMe SSD
1.5 编译过程中的正常现象
不用担心的现象:
- ✅ 大量警告信息:这是正常的,代码中有许多已弃用的 API
- ✅ 某些任务耗时很长:某些编译单元很大,需要时间处理
- ✅ CPU 使用率波动:取决于当前编译的文件复杂度
- ✅ 硬盘频繁活动:这是正常的
需要立即停止的现象:
- ❌ "Error: out of memory":内存不足
- ❌ "fatal error:":致命错误
- ❌ 某个错误重复出现:可能需要修复代码
2 编译完成与验证
2.1 编译成功的标志
编译成功时,你会看到:
[6732/6732] LINK chrome.exe
后面可能还有一些最后的链接操作,最终输出:
Done. Built successfully. Total time: 1h 23m 45s
恭喜!你的 Chromium 144 浏览器编译完成了!
2.2 验证编译输出
确认编译的可执行文件存在:
# 检查是否生成了 chrome.exe
ls -la .\out\Default\chrome.exe
# 查看文件大小
(Get-Item .\out\Default\chrome.exe).Length / 1MB
# 输出应该是 200-400MB 左右(取决于配置)
2.3 编译成品的内容
在 out\Default 目录中,你会找到:
out/Default/
├── chrome.exe # 主浏览器程序
├── *.dll # 依赖库文件
├── *.so # 动态链接库(如果启用了组件编译)
├── resources/
│ ├── chrome.pak # 资源文件
│ └── ...
├── locales/
│ ├── en-US.pak
│ ├── zh-CN.pak # 中文资源
│ └── ...
└── ...
重要文件:
chrome.exe:主程序*.dll:运行时需要的库文件resources/:UI 资源、图标等locales/:多语言支持
3 运行你的 Chromium 144
3.1 第一次运行
.\out\Default\chrome.exe
可能出现的提示:
- Windows Defender SmartScreen 警告:选择"更多信息" → "仍要运行"(因为这是未签名的程序)
- 这是正常的,你的编译程序是未签名的

3.2 首次启动特性
首次运行时,Chromium 会:
- 创建用户配置目录 :
%APPDATA%\Chromium或%LOCALAPPDATA%\Chromium - 初始化默认设置:书签、扩展等
- 下载最新的 Widevine(可选):用于播放受保护的视频
这会占用 20-30 秒,这是正常的。
3.3 验证浏览器功能
成功启动后:
- 检查版本号 :
- Chrome 菜单 → "关于 Chromium"
- 应该显示 "Chromium 144.x.x.x"
- 打开网页 :
- 在地址栏输入 https://www.google.com 或其他网址
- 正常加载网页表示编译成功
- 测试基本功能 :
- 打开新标签页
- 刷新页面
- 打开开发者工具(F12)
4 编译失败的处理
4.1 常见编译错误
错误类型 1:链接错误
症状:LNK2001: unresolved external symbol
解决:
# 清理并重新编译
rm -r .\out\Default\obj
autoninja -C .\out\Default chrome
错误类型 2:头文件找不到
症状:fatal error: 'include/path.h' file not found
解决:
# 重新同步依赖
gclient sync
# 重新生成构建文件
gn gen .\out\Default
# 重新编译
autoninja -C .\out\Default chrome
错误类型 3:内存不足
症状:cannot allocate memory 或 out of memory
解决:
- 关闭其他应用程序释放内存
- 减少并行编译任务:
ninja -C .\out\Default -j 4 chrome - 扩大虚拟内存
错误类型 4:编译器错误
症状:某些源文件无法编译
解决:
# 确保 Visual Studio 和 SDK 是最新的
# 检查环境变量
echo $env:vs2022_install
echo $env:WINDOWSSDKDIR
# 如果配置不正确,重新配置
gn args .\out\Default
4.2 编译中断后恢复
# 继续编译(保留已完成的工作)
autoninja -C .\out\Default chrome
# 完全清理后重新编译
rm -r .\out\Default
gn gen .\out\Default
autoninja -C .\out\Default chrome
结语
你做到了!你已经成功编译并运行了 Chromium 144 浏览器。
这不仅仅是一个技术成就,更是一个里程碑。从零开始,通过七篇详细的指南,你:
✅ 搭建了完整的编译环境
✅ 配置了版本控制系统
✅ 获取了 30GB+ 的源代码
✅ 生成了构建文件
✅ 成功编译了浏览器
✅ 运行了你自己编译的程序
这个过程教会了你:
- 大型开源项目是如何组织的
- 复杂的构建系统是如何工作的
- 如何调试和解决编译问题
现在,你的 Chromium 144 浏览器已经运行在你的电脑上。你可以:
- 深入学习:阅读源代码,理解浏览器的工作原理
- 进行修改:改变界面、添加新功能、修复 Bug
- 参与贡献:向 Chromium 项目提交 Pull Request
- 进行性能优化:通过修改编译参数和源代码来优化
从配置第一个编译工具到运行最终的可执行文件,这段旅程或许漫长,但每一步都是必不可少的。你所学到的不仅仅是如何编译 Chromium,更是如何理解和掌控一个复杂的软件系统。
想象一下,当你打开这个由自己编译的浏览器时,每一个像素的渲染、每一次 JavaScript 的执行、每一个网络请求的发送,背后都是你能够理解和修改的代码。这种掌控感,正是开源软件赋予每一个开发者的力量。
感谢你跟随这个完整的编译之旅。愿你在 Chromium 的探索中收获满满,创造无限可能!