Ubuntu 20.04编译Chrome浏览器

本文记录chrome浏览器编译过程,帮助大家避坑qaq

官网文档:https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md

一.系统要求

  • 一台64位的英特尔机器,至少需要8GB的RAM。强烈推荐超过16GB。
  • 至少需要100GB的空闲磁盘空间。
  • 你必须已经安装了Git和Python v3.8或更高版本(并且python3必须指向一个Python v3.8或更高版本的二进制文件)。如果你的系统中没有合适的版本,Depot_tools捆绑了一个合适的Python版本在$depot_tools/python-bin中。

二.下载 depot_tools

克隆depot_tools仓库:

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

将depot_tools添加到你的PATH环境变量的开头,假设你克隆了depot_tools到/path/to/depot_tools:

export PATH="/path/to/depot_tools:$PATH"

三.获取代码

创建一个Chromium目录,并切换到该目录(您可以随意命名此目录和放置在任何位置,只要完整路径不含有空格):

mkdir ~/chromium && cd ~/chromium

运行depot_tools中的fetch工具来检出代码及其依赖项。

fetch --nohooks chromium

如果您不需要完整的代码仓库历史记录,可以通过在fetch命令中添加 –no-history 标志来节省大量时间。

即使在快速网络连接上,也预计该命令需要30分钟,而在较慢的连接上可能需要数小时。注意需要科学上网!!!

如果您已经在计算机上安装了构建依赖项,您可以省略 –nohooks 标志,fetch将在结束时自动执行 gclient runhooks

中间会遇到各种问题,请大家自助查看(大部分都是网络的问题):

报错:error: RPC failed; curl 56 GnuTLS recv error (-9): Error decoding the received TLS packet.
由于git默认缓存大小不足导致的。
解决方法是:使用下面的命令增加缓存大小。

git config --global http.postBuffer 52428800000

报错:gclient sync fails running running
解决方法:https://github.com/intel/ozone-wayland/issues/395

当fetch完成时,它将创建一个隐藏的 .gclient 文件和一个名为 src 的目录在工作目录中。接下来的说明假定您已切换到 src 目录中:

cd src

四.安装额外的构建依赖项:

./build/install-build-deps.sh

运行 hooks

一旦您至少运行了一次install-build-deps脚本,您现在可以运行Chromium特定的hooks,这些hooks将下载您可能需要的额外二进制文件和其他内容:

gclient runhooks

五.配置构建环境

Chromium使用Ninja作为其主要构建工具,同时使用一个名为GN的工具来生成 .ninja 文件。您可以创建任意数量的具有不同配置的构建目录。要创建一个构建目录,请运行:

gn gen out/Default

每个新的构建目录只需要运行一次,Ninja会根据需要更新构建文件。

您可以将Default替换为其他名称,但它应该是out目录的子目录。

有关其他构建参数,包括发布设置,请参阅GN构建配置。默认情况下,将创建一个与当前主机操作系统和CPU匹配的调试组件构建。

要了解有关GN的更多信息,请在命令行上运行gn help或阅读快速入门指南。

六.构建Chromium

使用以下命令使用Ninja构建Chromium:

autoninja -C out/Default chrome

(autoninja是一个包装器,它会自动提供传递给ninja的参数的最佳值。)

您可以通过从命令行运行以下命令获取GN的所有其他构建目标列表:

 gn ls out/Default

要编译其中一个目标,请将GN标签传递给Ninja,不要在前面加“//”(例如,对于 //chrome/test:unit_tests,请使用 autoninja -C out/Default chrome/test:unit_tests)。

七.运行Chromium

一旦构建完成,您可以简单地运行浏览器:

out/Default/chrome

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/174758.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

淘宝京东优惠券信息API接口系列

获取淘宝优惠券信息接口需要使用淘宝开放平台提供的API接口。以下是获取优惠券信息的步骤: 进入淘宝开放平台,注册并登录账号。在开放平台页面中,找到“优惠券”或“营销工具”等相关的API接口,根据需要进行选择。根据接口文档&a…

Java 设计模式——组合模式

目录 1.概述2.结构3.实现3.1.抽象构件3.2.容器构件3.3.叶子节点3.4.测试 4.分类5.使用场景6.优点 1.概述 (1)大家对于上面这个图片肯定非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构。在树形结构中可…

通讯协议学习之路(实践部分):SPI开发实践

通讯协议之路主要分为两部分,第一部分从理论上面讲解各类协议的通讯原理以及通讯格式,第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN;视频会发布在bilibili(UID:399951374) 本文…

【MySQL】MySQL中的锁

全局锁 全局锁是对整个数据库实例加锁,整个库处于只读状态。 flush tables with read lock 适用场景 全局锁适用于做全库逻辑备份,但是整个库处于只读状态,在备份期间,所有的更新操作、DDL将会被阻塞,会对业务产生影…

SAP ABAP 主动调用外部系统的REST接口(x-www-form-urlencoded)

如何在SAP ECC中调用外部系统提供的REST接口地址? Postman中使用Body中参数情况,使用链接的情况 x-www-form-urlencoded POST成功调用样例如下: SAP中实现如下: 1. 事务码STRUST,导入对方系统证书 2. 事务码SM59配置destinati…

代码随想录Day45 动态规划13 LeetCode T1143最长公共子序列 T1135 不相交的线 T53最大子数组和

LeetCode T1143 最长公共子序列 题目链接:1143. 最长公共子序列 - 力扣(LeetCode) 题目思路: 动规五部曲分析 1.确定dp数组的含义 这里dp数组的含义是结尾分别为i-1,j-1的text1和text2的最长公共子序列长度 至于为什么是i-1,j-1我之前已经说过了,这里再…

房产中介租房小程序系统开发搭建:详细指南教你如何构建

随着微信小程序的日益普及,越来越多的企业和个人开始尝试开发自己的小程序。以下是制作一个房地产微信小程序的详细教程,希望对大家有所帮助。 一、注册登录乔拓云平台,进入后台 首先,需要注册并登录乔拓云平台,该平台…

【极客时间-系列教程】Vim 实用技巧必知必会-更多常用命令:应对稍复杂的编辑任务

文章目录 更多常用命令:应对稍复杂的编辑任务光标移动文本修改文本对象选择 更多常用命令:应对稍复杂的编辑任务 几个基本的命令已经了解了,可以操作简单的任务,但一些很复杂的命令,并没有了解到,只知道几…

文件上传 [ACTF2020 新生赛]Upload1

打开题目,发现是一道文件上传题目 随便上传个一句话木马上去 发现网站前端有白名单限制,只能上传含有jpg,png,gif的后缀文件 那我们便传个2.jpg的一句话木马上去,bp抓包 我们改成php文件后缀试试,发现重发…

基于入侵杂草算法优化概率神经网络PNN的分类预测 - 附代码

基于入侵杂草算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于入侵杂草算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于入侵杂草优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

将铜互连扩展到2nm的研究

晶体管尺寸在3nm时达到临界点,纳米片FET可能会取代finFET来满足性能、功耗、面积和成本目标。同样,正在评估2nm铜互连的重大架构变化,此举将重新配置向晶体管传输电力的方式。 芯片制造商也可能会在2nm节点开始用钌或钼在一定程度上取代铜。…

【系统安装】ubuntu20.04安装,正经教程,小白安装教程,百分百成功安装

1、安装的前提是有启动盘,这个比较好处理,清华源找到ubuntu20.04.iso镜像文件下载,然后用Rufus来制作启动盘就可以了,需要注意的是目标文件系统需要是UEFI,其他的话就没太多要求了,如果卡在这一步的话&…