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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式系统中,输入网址之后,发生了什么?

让我们一步一步地来看这个过程。 步骤1: 用户在浏览器中输入一个URL(比如www.bytebytego.com),然后按下回车键。首先,我们需要将这个URL转换成一个IP地址。通常,这个映射关系会被存储在缓存中&#xff0c…

Jmeter —— jmeter参数化实现

jmeter参数化 在实际的测试工作中,我们经常需要对多组不同的输入数据,进行同样的测试操作步骤,以验证我们的软件的功能。这种测试方式在业界称为数据驱动测试, 而在实际测试工作中,测试工具中实现不同数据输入的过程称…

Leetcode刷题详解——全排列 II

1. 题目链接:47. 全排列 II 2. 题目描述: 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums [1,1,2] 输出: [[1,1,2],[1,2,1],[2,1,1]]示例 2: 输…

ros1 基础学习04- 自定义Publisher消息编程实现示例

整理步骤 cd进入工作空间下的代码空间, 创建功能包,并配置依赖 在功能包里面的代码空间里编写C代码文件 在cmakelist文件里面配置编译规则 cd到工作空间,编译工作空间,source设置环境变量 打开roscore, 运行海龟仿真节点,运行功能…

Django——orm模块创建表关系

django orm中如何创建表关系 1. 表关系分析 表与表之间的关系: 一对多 多对多 一对一 没有关系 判断表关系的方法: 换位思考用4张表举例: 图书表 出版社表 作者表 作者详情表图书和出版社是一对多的关系 外键字段建在多的那一方图书和作者是多对多的关系 需要创建第三张表来…

一致性算法介绍(二)

1.4. NWR N :在分布式存储系统中,有 多少份备份数据 W :代表一次成功的更新操作要求至少有 w 份数据写入成功 R : 代表一次成功的读数据操作要求至少有 R 份数据成功读取 NWR值的不同组合会产生不同的一致性效果,当WR…

leetcode:141. 环形链表

一、题目 函数原型: bool hasCycle(struct ListNode *head) 二、算法 判断不是环形链表,只需遍历链表找到空结点即可。 判断是环形链表,由于链表是环形的,遍历不会永远不会结束。所以要设置快慢指针,慢指针一次走一步&…

解锁潜在商机的钥匙——客户管理系统公海池

在竞争激烈的市场环境下,企业需要更智能、高效的方式管理客户,从而挖掘潜在商机。客户管理系统的公海池,就是为此而生的利器,让你轻松解锁商机,提升客户管理效能。 公海池,打破信息孤岛,释放潜在…

最新itvboxfast源码如意itvbox影视仓二开会员版新增支持多线路仓库自动换源等功能支持对接苹果CMS和tvbox接口搭建教程

此套源码包含前后端源码,也有打包好的APK,不知道打包的也可以反编译,有视频教程 这次更新支持自动换源以及支持多线路仓库,首页轮播图优化,新增主题,积分签到还有很多新增功能,由于这里不能发太多详细的东…

新浪微博一键删除所有内容

亲自测试用 具体操作如下: 对应的 1 2 如下,进入这个界面是按F12 就可以看到 最后画横线的位置 替换自己的id 对应的就是 3 具体代码如下 //向删除接口发起请求,删除对应节点 function del_weibo(id) {var myHeaders new Headers();myHea…

Vuex:模块化Module

由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。 这句话的意思是,如果把所有的状态都放在/src/store/index.js中,当项目变得越来越大的时候,Vue…

C#,数值计算——函数计算,Epsalg的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Convergence acceleration of a sequence by the algorithm.Initialize by /// calling the constructor with arguments nmax, an upper bound on the /// number of term…

软件工程的舞台上,《人月神话》的美学纷飞

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 今天给大家分享一本书&#xff1a;《人月神话》——软件工程的经典之作。 《人月神话》是一本具有深远影响力的软件工程著作&#xff0c;无论是软件开发者、管理者还是学习软件工程的人士&#xff0c;都能从中获得宝贵的启…

高性能网络编程 - 解读3种线程模型

文章目录 Pre线程模型1&#xff1a;传统阻塞 I/O 服务模型线程模型2&#xff1a;Reactor 模式Reactor 模式的基本设计思想Reactor 模式中的关键组成3种典型实现单 Reactor 单线程单 Reactor 多线程主从 Reactor 多线程 小结 线程模型3&#xff1a;Proactor 模型 Pre 高性能网络…

深入理解 TCP;场景复现,掌握鲜为人知的细节

握手失败 第一次握手丢失了&#xff0c;会发生什么&#xff1f; 当客户端想和服务端建立 TCP 连接的时候&#xff0c;首先第一个发的就是 SYN 报文&#xff0c;然后进入到 SYN_SENT 状态。 在这之后&#xff0c;如果客户端迟迟收不到服务端的 SYN-ACK 报文&#xff08;第二次…

管易云与电商平台的无代码集成:实现API连接与用户运营

管易云简介及其与电商平台的合作 金蝶管易云是金蝶集团旗下以电商为核心业务的子公司&#xff0c;是国内最早的电商ERP服务商之一&#xff0c;总部在上海&#xff0c;与淘宝、天猫、 京东、拼多多、抖音等300多家主流电商平台建立合作关系&#xff0c;同时管易云是互联网平台首…

MATLAB中deconvwnr函数用法

目录 语法 说明 示例 使用 Wiener 滤波对图像进行去模糊处理 deconvwnr函数的功能是使用 Wiener 滤波对图像进行去模糊处理。 语法 J deconvwnr(I,psf,nsr) J deconvwnr(I,psf,ncorr,icorr) J deconvwnr(I,psf) 说明 J deconvwnr(I,psf,nsr) 使用 Wiener 滤波算法对…

操作系统 | 编写内核

&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《操作系统实验室》&#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 目录结构 1. 操作系统实验之编写内核 1.1 实验目的 1.2 实验内容 1.3 实验步骤 1.4 实验过程 …

1.linux极速进阶

目录 概述文件相关vi文件编辑查找字符串查找某一行内容复制粘贴快速删除快速跳到文件首行和末行 进程相关ps/netstatjpstopkill linux三剑客grepsed添加方面操作删除方面替换操作 awk 结束 概述 身为后端开发&#xff0c;大数据平台搭建&#xff0c;对 linux 系统的操作最起码…

高阶组件和Hooks

目录 1. 高阶组件&#xff08;Higher-Order Components&#xff09; 1.1 创建高阶组件 1.2 使用高阶组件 2. Hooks 2.1 使用useState Hook管理状态 2.2 创建自定义Hook 结论 1. 高阶组件&#xff08;Higher-Order Components&#xff09; 高阶组件是一个接受一个组件作为…