本文记录chrome浏览器编译过程,帮助大家避坑qaq
官网文档:https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md
克隆depot_tools仓库:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
将depot_tools添加到你的PATH环境变量的开头,假设你克隆了depot_tools到/path/to/depot_tools:
export PATH="/path/to/depot_tools:$PATH"
创建一个Chromium目录,并切换到该目录(您可以随意命名此目录和放置在任何位置,只要完整路径不含有空格):
mkdir ~/chromium && cd ~/chromium
运行depot_tools中的fetch工具来检出代码及其依赖项。
fetch --nohooks chromium
如果您不需要完整的代码仓库历史记录,可以通过在fetch命令中添加 –no-history 标志来节省大量时间。
即使在快速网络连接上,也预计该命令需要30分钟,而在较慢的连接上可能需要数小时。注意需要科学上网!!!
如果您已经在计算机上安装了构建依赖项,您可以省略 –nohooks 标志,fetch将在结束时自动执行 gclient runhooks 。
中间会遇到各种问题,请大家自助查看(大部分都是网络的问题):
报错:error: RPC failed; curl 56 GnuTLS recv error (-9): Error decoding the received TLS packet.
由于git默认缓存大小不足导致的。
解决方法是:使用下面的命令增加缓存大小。
git config --global http.postBuffer 52428800000
报错:gclient sync fails running running
解决方法:https://github.com/intel/ozone-wayland/issues/395
当fetch完成时,它将创建一个隐藏的 .gclient 文件和一个名为 src 的目录在工作目录中。接下来的说明假定您已切换到 src 目录中:
cd src
./build/install-build-deps.sh
运行 hooks
一旦您至少运行了一次install-build-deps脚本,您现在可以运行Chromium特定的hooks,这些hooks将下载您可能需要的额外二进制文件和其他内容:
gclient runhooks
Chromium使用Ninja作为其主要构建工具,同时使用一个名为GN的工具来生成 .ninja 文件。您可以创建任意数量的具有不同配置的构建目录。要创建一个构建目录,请运行:
gn gen out/Default
每个新的构建目录只需要运行一次,Ninja会根据需要更新构建文件。
您可以将Default替换为其他名称,但它应该是out目录的子目录。
有关其他构建参数,包括发布设置,请参阅GN构建配置。默认情况下,将创建一个与当前主机操作系统和CPU匹配的调试组件构建。
要了解有关GN的更多信息,请在命令行上运行gn help或阅读快速入门指南。
使用以下命令使用Ninja构建Chromium:
autoninja -C out/Default chrome
(autoninja是一个包装器,它会自动提供传递给ninja的参数的最佳值。)
您可以通过从命令行运行以下命令获取GN的所有其他构建目标列表:
gn ls out/Default
要编译其中一个目标,请将GN标签传递给Ninja,不要在前面加“//”(例如,对于 //chrome/test:unit_tests,请使用 autoninja -C out/Default chrome/test:unit_tests)。
一旦构建完成,您可以简单地运行浏览器:
out/Default/chrome