1、编译环境准备
1、因为使用公司的环境,申请的是48c128g的环境,此环境编译较快,大概时间需要一个半小时,操作系统有条件的话可以装成Ubuntu,我是在欧拉系统上装了一个Ubuntu的docker镜像,在docker容器中进行chrome源码编译。可以使用命令拉取对应的image。
docker pull m.daocloud.io/docker.io/library/ubuntu:24.04
2、拉取chromium源码需要科学上网,执行下面的命令,先配置git和http代理。
git config --global http.proxy http://x.x.x.x:1234 &&
git config --global https.proxy http://x.x.x.x:1234 &&
export HTTP_PROXY=http://x.x.x.x:1234 &&
export HTTPS_PROXY=http://x.x.x.x:1234
2、代码拉取
3、拉取depot_tools工具。
mkdir /data/chrome -p &&
cd /data/chrome &&
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
4、拉取depot_tool完成之后,将depot_tool的路径设置到PATH环境变量,打开~/.bashrc文件,在文件最下面加入下面命令。加完之后执行source /root/.bashrc命令使其生效。
export PATH="$PATH:/data/chrome/depot_tools"
5、拉取chromium源码,如果不想拉取代码时间太长,只拉取最新的代码。以及想拉取全量代码,命令分别如下。
fetch --nohooks --no-history chromium #最新代码
fetch --nohooks chromium #全量代码,时间较慢,大概需要几个小时
3、代码编译
6、进入到chrome源码中,根据自己想要编译的版本,使用git checkout xxx切换到对应的版本.
cd /data/chrome/src &&
git checkout 136.0.7086.1
7、编译chrome源码需要将depot_tools项目切换到对应的版本才能正常编译,如何查看当前chrome源码版本对应的depots_tool的版本,如下图所示。拷贝圈出来的commit id,进入到depot_tools目录,执行git check e8523914418f7c71281df174be4778f36a357b12,切换到对应的版本。
8、为了防止编译源码的时候,脚本自动更新depot_tools项目,导致编译报错,需要执行下面的命令。
export DEPOT_TOOLS_UPDATE=0
9、安装源码编译需要的依赖,因为我是在root用户下进行编译的,没有sudo命令,需要将./build/install-build-deps.py中的所有sudo命令前缀去掉。
./build/install-build-deps.sh --arm
10、安装交叉编译工具。
./build/linux/sysroot_scripts/install-sysroot.py --arch=arm &&
./build/linux/sysroot_scripts/install-sysroot.py --arch=arm64
11、拉取相关依赖的源代码
gclient sync && gclient runhooks
12、配置编译参数,下面的参数具体是什么意思可以自己查一下。
mkdir out/release
gn gen out/release --args='is_official_build=true
strip_debug_info=true
is_debug=false
optimize_for_size=true
is_component_build=false
symbol_level=0
enable_nacl=false
blink_symbol_level=0
target_cpu="arm64"'
13、开始编译
autoninja -C out/release chrome
14、整个编译过程大概花了一个半小时,编译的结果如下图所示