首先,利用vmware搭建ubuntu20.04的虚拟机

由于chromium的源码比较大,在git的时候需要分配数据交换的大小,如果小了就下不下来。所以最好给这台虚拟机分配12G内存以上。存储100G以上。ubuntu的iso文件上ubuntu官网下载即可。如果你当前机器本身就是ubuntu20.04,那么这一步就可以跳过。

构建全局上网不受限的环境

由于chromium源码被墙,想要clone下来需要自备全局上网不受限的环境。

本机做代理,ubuntu设置网络代理为当前机器

在本机中执行ipconfig,可以看见VMnet8这张网卡,就是vmware中NAT模式的网卡。

然后在Ubuntu中设置代理:

其中1080是你的全局不受限上网软件作为代理时监听的端口。

此时你在Ubuntu中测试一下看是否能够访问chromium官方网站

如果此时没有问题。那么你就直接照着官网的操作接着操作就行。你也可以参考下面的内容,是我的实践。

拉取源码必须要在一个网络环境比较好且稳定的地方

安装depot_tools

这个工具是谷歌专门用来便于下载和同步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脚本即可。

等到依赖安装完毕,就可以看源码了。

下载clion查看源码

如果你在ubuntu上面没有自己喜欢的看c/c++源码的软件,那么可以使用clion。clion是jetbrains全家桶之一,所以稳定性还是有保证的。值得注意的是:在ubuntu下关闭clion的启动脚本的进程并不能关闭clion本身,有时候clion很流氓,关不掉的时候,只能用 ps 命令查看所有的clion进程,然后全部杀掉。

chromium源码结构

chromium下载下来的代码非常巨大,但是大部分都是测试代码。相关的资料,去官网看开发者文档就行。控制浏览器行为的代码一般是在blink相关的目录下。我就是对blink下的源码进行了修改,定义了符合自己应有场景的函数行为。

编译chromium

首先执行

gclient runhooks

下载hook并执行,完成之后,执行下面的命令即可

gn gen out/Default
# 这一步大概等待10s-60s左右
autoninja -C out/Default chrome
# 初次编译,这一步大约需要十几个小时

编译完成之后,进入到out/Default目录即可。可以看见名为chrome的可执行文件。

ubuntu20.04修改编译chromium源码实战相关推荐

  1. Ubuntu 16.04下载编译Android11源码

    Ubuntu 16.04下载编译Android11源码 Ubuntu 16.04下载编译Android11源码 1. 硬件要求 2. 设置Linux构建环境 1. 安装所需的软件包 2. 安装Open ...

  2. windows下载编译chromium源码

    前言 chromium 源码的下载编译,真的就是如各位前辈说的一样,参考再完整的教程,还是会遇到各种各样的问题.因为每个人的开发环境是不一样的,网络环境也不一样. 一路参考各路大神的教程开始踩坑填坑的 ...

  3. Ubuntu18.04系统编译android源码环境配置

    1. 前言 我们做andorid系统开发,肯定时刻与源码打交到,特别是做新项目时,最重要的事情就是下载源码,然后配置环境编译,假如你的电脑是刚重装系统过,一个全新的开发环境,那么首要解决的事情就是完善 ...

  4. android 修改编译内核源码 对抗反调试

    0×00  写在前面 攻防对立.程序调试与反调试之间的对抗是一个永恒的主题.在安卓逆向工程实践中,通过修改和编译安卓内核源码来对抗反调试是一种常见的方法.但网上关于此类的资料比较少,且都是基于AOSP ...

  5. android .9编译,在Ubuntu 9.04下编译Android源码

    一直都是刷官方的版本,准备自己编译一下刷机. 首先是下载,Android的源码是托管在Linux Kernel的源码站点,所以版本工具是git.关于git的使用和安装请见我的另一篇文章<在Ubu ...

  6. ubuntu-18.04.4 Android系统源码TP1A(Android 13)下载及编译

    继上一篇博客介绍了VMware Workstation15 配置ubuntu-18.04.4,这篇主要介绍安装后环境搭建,Android源码的下载与编译.小编当前下载的是当前最新的代码,是主干分支代码 ...

  7. chromium源码下载并编译

    目前,chromium的源代码已经全部迁移到了git管理,所以本文主要梳理一下下载chromium源代码的过程. 一.概况 chromium现在分为四个大分支: canary:最前沿的版本,每天都发布 ...

  8. 从零开始,手把手教你如何在Ubuntu下编译VLC-Android源码

    前言 公司项目中使用的libvlcjni.so库文件,有点老,对Android 6.0+系统兼容性太差了,当程序运行在Android6.0+系统上时,回弹出警告框,提示libvlcjni.so:tex ...

  9. ubuntu20.04 编译内核源码5.15.58

    现在的内核版本: ok@ok-VirtualBox:~$ uname -a Linux ok-VirtualBox 5.15.0-41-generic #44~20.04.1-Ubuntu SMP F ...

最新文章

  1. 自动混合精度(AMP)介绍与使用【Pytorch】
  2. [Eclipse] - 解决导入flask模块出现的Unresolved Import flask问题
  3. Java-日期 正则表达式
  4. 28. css样式中px转rem
  5. cri-o 与 cni的集成分析
  6. OpenShift 4 之通过直接访问内部的 Image Registry 操作容器镜像
  7. ctf php文件上传图片格式,CTF-WEB:文件上传
  8. SpringBoot 2.0 系列003 -- 自定义Parent
  9. Python之千与千寻豆瓣短评词云秀
  10. 梯度下降来龙去脉附matlab代码
  11. 一次订单号重复引起的事故,把我坑惨了!
  12. QQ邮箱自动登录问题--frame嵌套元素定位
  13. eemd的r语言序列_EEMD程序,和大家分享
  14. xml文件怎么转换成wps_word文档怎样转换成xml 怎么将XML文档转成WORD文档
  15. word 中如何去掉复制的文字的底纹?
  16. 数据、数据库、数据库管理系统、数据库系统的概念
  17. 2021年11月推荐阅读的10篇论文
  18. LeetCode:112(Python)—— 路径总和(简单)
  19. 软件交付方式有哪些_如何交付有意义的软件
  20. JVM运行时内存结构学习

热门文章

  1. 生化危机8Switch Pro手柄按键提示补丁MOD
  2. 一个想让你承认是Gay的“勒索版”远控木马Swamp分析
  3. Spring Cloud Nacos整合 Seata 实现分布式事务
  4. java面试之每天五题
  5. python可以开发3d游戏吗_用python3从零开始开发一款烧脑射击游戏#3
  6. 为什么现在的手机越来越重,越来越厚了?
  7. 2020初网络营销成功案例
  8. 3DMAX游戏角色头发建模教程
  9. ubuntu 访问群晖NAS存储硬盘
  10. python装饰器与闭包_python中闭包和装饰器的理解(关于python中闭包和装饰器解释最好的文章)。...