chromium编译过程记录

版权声明:本作品由掠雪墨影创作,采用知识共享署名 4.0 国际许可协议进行许可。转载请以链接形式标明本文地址。 https://blog.csdn.net/vinson0526/article/details/51133658

最近因为项目的需要,要了解一下chromium,就在linux下编译了一下chromium。本身来讲,得益于google的编译系统,编译chromium是十分简单的。但是因为“墙”存在,编译中还是遇到了一些问题。在此记录一下。

下载编译工具

打开 chromium 的项目地址,这里详细说明了如何获取源码并编译。我们只需一步一步的做下去。
在编译前,我们需要先下载必要的编译工具,在 这里
具体来讲,需要执行一下几步:

$ mkdir chromium
$ mkdir chromium
$ cd chromium
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
$ export PATH=$PATH:/path/to/depot_tools # 可以放入bashrc

需要注意的是,因为代码在“墙”的外面。我们需要配置一下git,让他能看到外面的风景。配置如下

# 全局代理
export http_proxy="addr:port"
# git代理
$ git config --global http.proxy addr:port

下载源码

google提供了自有的工具去fetch源码,其实还是调用的git,因为前面已经配置了git,所以可以顺利拿到源码。

$ fetch --nohooks --no-history chromium

获取必要的第三方依赖

因为我使用的是ubuntu,所以这一步比较简单,只需要执行源码中的./build/install-build-deps.sh。如果你使用的是其他的linux发行版,则需要对应于此脚本,安装缺少的依赖。

$ cd src
$ ./build/install-build-deps.sh

执行hooks

这一步,编译工具会获取一些需要的工具包。

$ gclient runhooks

在中间,可能会因为无法下载所需文件而报错。我们需要修改一些文件,来完成这一步。具体如下:

# 需要修改的文件:src/build/linux/sysroot_scripts/install-sysroot.py:207
# 修改如下:
['curl', '--proxy', 'addr:port', '--fail', '--retry', '3', '-L', url, '-o', tarball]

可以看出,这个python脚本是通过调用curl来下载文件的,所以我们为其添加了代理设置。
同时,为了让gclient能够使用代理,我们还需要设置boto,方法如下:

# 在user_home目录下
$ touch .boto

# 编辑 .boto
[boto]
proxy=addr
proxy_port=port

# 加入环境变量
export NO_AUTH_BOTO_CONFIG=~/.boto

开始编译

使用google的ninja开始编译就ok了。注意不要使用out/Defaultout/Debug这两个目录,作为输出目录。

# 编译chrome
$ ninja -C out/Release chrome
# 编译sandbox
$ ninja -C out/Release chrome_sandbox
# 编译chromedriver
$ ninja -C out/Release chromedriver
展开阅读全文

没有更多推荐了,返回首页