由于chromium的源码比较大,在git的时候需要分配数据交换的大小,如果小了就下不下来。所以最好给这台虚拟机分配12G内存以上。存储100G以上。ubuntu的iso文件上ubuntu官网下载即可。如果你当前机器本身就是ubuntu20.04,那么这一步就可以跳过。
由于chromium源码被墙,想要clone下来需要自备全局上网不受限的环境。
在本机中执行ipconfig,可以看见VMnet8这张网卡,就是vmware中NAT模式的网卡。
然后在Ubuntu中设置代理:
其中1080是你的全局不受限上网软件作为代理时监听的端口。
此时你在Ubuntu中测试一下看是否能够访问chromium官方网站
如果此时没有问题。那么你就直接照着官网的操作接着操作就行。你也可以参考下面的内容,是我的实践。
这个工具是谷歌专门用来便于下载和同步chromium源码的工具(其他的项目我不知道)。
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
然后在当前用户的根目录下,打开 ~/.bashrc 并将depot_tools的bin目录放到path下。也就是写入
export PATH="$PATH:${HOME}/depot_tools"
然后回到目录中,执行
source ~/.bashrc
使配置生效。
在当前用户的根目录下(最好别用root用户)创建一个你放源码的文件
mkdir ~/chromium && cd ~/chromium
然后用fetch工具来获取源码,fetch工具是depot_tools中的工具
fetch --nohooks --no-history chromium
如果提示fetch不存在,那么只有可能你的depot_tools没有下载成功或者没有加入到系统path中
这里需要注意的是,该命令因你所处的网络环境,可能会长达数小时,我200M宽带下了三小时。所以获取源码的时候一定要找一个网络环境比较好且稳定,同时你也不会离开。晚上睡觉的时候下载是一个不错的体验。
我们下载下来的源码中,有个src目录,进去之后执行
./build/install-build-deps.sh
如果该命令没有下载大量的(接近1.5G)包,且出现了
E: Could not configure 'libc6:i386'.
E: Could not perform immediate configuration on 'libgcc-s1:i386'. Please see man 5 apt.conf under APT::Immediate-Configure for details. (2)
这样的错误,这个问题可以归咎于ubuntu20.04系统的问题,你需要首先先执行
apt-get dist-upgrade -o APT::Immediate-Configure=0
然后再执行一遍下载依赖的./build/install-build-deps.sh脚本即可。
等到依赖安装完毕,就可以看源码了。
如果你在ubuntu上面没有自己喜欢的看c/c++源码的软件,那么可以使用clion。clion是jetbrains全家桶之一,所以稳定性还是有保证的。值得注意的是:在ubuntu下关闭clion的启动脚本的进程并不能关闭clion本身,有时候clion很流氓,关不掉的时候,只能用 ps 命令查看所有的clion进程,然后全部杀掉。
chromium下载下来的代码非常巨大,但是大部分都是测试代码。相关的资料,去官网看开发者文档就行。控制浏览器行为的代码一般是在blink相关的目录下。我就是对blink下的源码进行了修改,定义了符合自己应有场景的函数行为。
首先执行
gclient runhooks
下载hook并执行,完成之后,执行下面的命令即可
gn gen out/Default
# 这一步大概等待10s-60s左右
autoninja -C out/Default chrome
# 初次编译,这一步大约需要十几个小时
编译完成之后,进入到out/Default目录即可。可以看见名为chrome的可执行文件。