当前位置: 首页 > news >正文

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

在这里插入图片描述

相关文章:

  • 『MySQL快速上手』-⑤-数据类型
  • 使用微信小程序控制蓝牙小车(微信小程序端)
  • U盘插在电脑上显示要格式化磁盘怎么办
  • 华为开源carbondata中的使用问题处理
  • gma 2.0.3 (2023.11.12) 更新日志
  • 谷歌插件报错 Manifest version 2 is deprecated, and support will be removed in 2023.
  • 手写C++ 实现链表的反转、删除、合并
  • 和数链“分布式存储”技术结合隐私计算让数据更安全
  • 【龙芯固件】ACPI——简介
  • Java必刷入门递归题×5(内附详细递归解析图)
  • 125. 验证回文串(力扣oj)
  • 案例分享:某汽车企业通过龙智拓展Jira功能,实现高效项目管理
  • 消息中间件汇总
  • 【Truffle】四、通过Ganache部署连接
  • 【 云原生 | K8S 】Kubernetes 概述
  • JS 中的深拷贝与浅拷贝
  • 【mysql】环境安装、服务启动、密码设置
  • 〔开发系列〕一次关于小程序开发的深度总结
  • ECMAScript入门(七)--Module语法
  • HTTP 简介
  • java第三方包学习之lombok
  • Laravel Telescope:优雅的应用调试工具
  • LeetCode18.四数之和 JavaScript
  • Magento 1.x 中文订单打印乱码
  • React-Native - 收藏集 - 掘金
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 人脸识别最新开发经验demo
  • 如何进阶一名有竞争力的程序员?
  • 新书推荐|Windows黑客编程技术详解
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • # .NET Framework中使用命名管道进行进程间通信
  • (4) PIVOT 和 UPIVOT 的使用
  • (pytorch进阶之路)扩散概率模型
  • (zhuan) 一些RL的文献(及笔记)
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (算法设计与分析)第一章算法概述-习题
  • (一)kafka实战——kafka源码编译启动
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原)Matlab的svmtrain和svmclassify
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .net打印*三角形
  • .NET多线程执行函数
  • .py文件应该怎样打开?
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [8481302]博弈论 斯坦福game theory stanford week 1
  • [C++11 多线程同步] --- 条件变量的那些坑【条件变量信号丢失和条件变量虚假唤醒(spurious wakeup)】
  • [cogs2652]秘术「天文密葬法」
  • [C语言]编译和链接
  • [emuch.net]MatrixComputations(7-12)
  • [HTML]Web前端开发技术6(HTML5、CSS3、JavaScript )DIV与SPAN,盒模型,Overflow——喵喵画网页
  • [IE技巧] 如何关闭Windows Server版IE的安全限制
  • [iOS开发]iOS中TabBar中间按钮凸起的实现