在Linux(Ubuntu20.04)上编译Chromium,附相关命令学习解释

以下内容基于Google官方文档

系统要求

  • 8GB 以上内存,建议 16GB 以上,实测 11GB 可以稳定 build (说明见下文)
  • 100GB 以上空闲空间,实测 chromium 文件夹最少需要 65GB
  • 已安装 Python3 和 Git
  • 过程中需要连接谷歌服务器,方法各显神通

安装 depot_tools

depot_tools 是 Google 编写的代码仓库管理工具,运行以下命令下载,会下载到当前文件夹

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

添加到PATH,这里添加到PATH的命令是一次性的,每次重启终端后要重新输入

$ export PATH="$PATH:${HOME}/depot_tools"

export 是环境变量相关的命令,PATH 和 windows 下的那个 PATH 一个含义,这个命令其所就是在 PATH 后面追加了 depot_tools 的路径,PATH 里每个路径用 : 分割
${HOME}~ 都表示 home 目录 (Terminal 默认在这里打开),所以如果上一步你把 depot_tools 放到其他文件夹要改一下路径

要想永久生效,在home目录下找到隐藏文件.bashrc,将export PATH="$PATH:${HOME}/depot_tools"加到文末即可在下次打开终端时生效。如果想立即在以打开的终端生效,使用命令

$ source ~/.bashrc

.bashrc 在每次打开 Terminal 的时候会运行一次,你可以在任意位置加一句 echo hahaha 然后新开一个 Terminal 试试

获得Chromium代码

创建一个 chromium 文件夹并进入

$ mkdir ~/chromium && cd ~/chromium

签出 chromium 代码,并安装依赖(文件大小30GB)

$ fetch --nohooks chromium

如果只要最新版本源码,文件大小会小很多

$ fetch --nohooks --no-history chromium

下载完成后进入 chromium 文件夹下创建出来的 src 文件夹,之后的命令都基于已经在 src 文件夹下

$ cd src

安装其他依赖

# 需要权限
$ sudo ./build/install-build-deps.sh
  • 你可能会遇到 The installation of the Chrome OS default fonts failed 并告诉你添加参数可以跳过,这里按照他说的添加参数直接跳过
ERROR: The installation of the Chrome OS default fonts failed.
This is expected if your repo is installed on a remote file system.
It is recommended to install your repo on a local file system.
You can skip the installation of the Chrome OS default founts with
the command line option: --no-chromeos-fonts.

# 像这样
$ sudo ./build/install-build-deps.sh --no-chromeos-fonts
  • 除此之外我在这里出错好像是本地系统的原因,可以运行一下 software update,根据显示的命令修复之类的

下载其他需要的文件

$ gclient runhooks
  • 你大概率会收到一个关于代理 proxy 的提示。
NOTICE: You have PROXY values set in your environment, but gsutilin depot_tools does not (yet) obey them.
Also, --no_auth prevents the normal BOTO_CONFIG environmentvariable from being used.
To use a proxy in this situation, please supply those settingsin a .boto file pointed to by the NO_AUTH_BOTO_CONFIG environmentvariable.
  • 这一报错可以选择忽略,虽然它不能识别你的 http 代理,但是访问的资源似乎没有被墙。如果想要消除这个报错,在任意位置创建一个名为 .boto 的文件,输入内容基于你在系统 newwork 里面设置的代理地址和端口,然后指向它的位置(见下),
[Boto]
proxy= 127.0.0.1 //自行改动
proxy_port= 8118 //自行改动
$ export NO_AUTH_BOTO_CONFIG=.boto文件的绝对路径
# 如你在home下直接创建,那么就是
$ export NO_AUTH_BOTO_CONFIG=/home/你的用户名/.boto
# 同理,这和添加到PATH一样是一次性语句,永久方法同上

set up the build

$ gn gen out/Default

build chromium

$ autoninja -C out/Default chrome
  • 这一步需要非常长的时间(3小时以上),虚拟机核心数当初随手设置的可以考虑增加CPU核心数来节约时间
  • 还需要大量的内存空间,如果内存不够,这个进程会被 killed
    这个过程是可以接着开始的,所以可以尝试反复运行这个命令,这样做可能可以趁电脑不注意成功越过需要大内存的地方 ,有效的原因可能是它同时在 build 多个 .o 文件,可能恰好某几个加起来的内存超过了。如果多次尝试未果,说明内存确实太小了,可能还可以尝试把内核设少一点。

运行

完成上面所有步骤后,你就可以运行 Chromium 了

$ out/Default/chrome

参考资料

谷歌官方文档(科学上网)

你可能感兴趣的:(linux,ubuntu)