使用gquic,需要用到chromium的net/third_party/quiche包,因此研究了下chromium编译的流程。chromium编译过程遇到了不少坑,总结下步骤:
前提:编译chromium的网络问题,每个人都有每个人的解决方案,解决后,接下来可以下载编译了(系统ubuntu)
1.首先我们阅读下官方文档(重要!!!)官网链接
2.大概步骤心中有数后,开始下面具体步骤吧:
(a)确认下是否已经安装python,系统可能已经自带了多个python版本,查看python不同版本教程链接。
(b)安装git,同时设置git全局配置参数。对于需要拉取指定版本chromium的,一定要增加全局参数如下:
git config --global core.autocrlf false
git config --global core.safecrlf true
参数具体作用就是避免拉取chromium代码时,git帮你自动更改换行符,导致源文件被修改,无法切到指定版本(不同操作系统的换行符不一致,git默认会帮你转换)。
(c)安装depot_tools工具:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
配置环境变量(也可以写depot_tools的绝对路径),此环境变量配置为临时配置,退出登录会失效,重新登录需要重新配置该环境变量:
export PATH="$PATH:${HOME}/depot_tools"
(d)拉取chromium代码:
mkdir ~/chromium && cd ~/chromium
fetch --nohooks chromium
如果你只是想拉取最新的chromium代码,不需要切指定版本,推荐fetch --nohooks chromium --no-history ,加入--no-history能少下载接近一半的量,若需要特定版本chromium,必须全量拉取,否则切版本时错误较多,一个个修复相当麻烦。
(e)漫长的等待后~拉取完毕后,进入拉取时生成的src目录。
(f)开始切换指定版本,若使用master分支最新版本,则直接跳过此步骤:
git fetch origin --tags
git reset --hard 81.0.4008.1
gclient sync --force --nohooks --with_branch_heads
注意:官方提供的checkout方案切指定版本存在问题,执行完毕后仍是最新版本。若报这种"fatal: reference is not a tree"类似错误,解决方案进入报错的库目录,checkout至指定版本,详情见解决方案链接。
(g)然后开始安装构建依赖:
./build/install-build-deps.sh
(h)下载run the Chromium-specific hooks额外的二进制文件:
gclient runhooks
(I)使用gn产生.ninja文件,并使用ninja进行编译:
gn gen out/Default
out目录在src目录内。Default确保在out目录内,可以任意取名。
ninja -C out/Default chrome
执行完毕,即可成功编译出chrome。