Chromium 开发指南2024 Mac篇-开始编译Chromium(五)
1.引言
在之前的指南中,我们已经详细介绍了在 macOS 上编译和开发 Chromium 的准备工作。您学会了如何安装和配置 Xcode,如何下载和配置 depot_tools,以及如何获取 Chromium 的源代码。通过这些步骤,您的开发环境已经搭建完毕,并且您已经成功获取了完整的 Chromium 代码库。
接下来,在本篇《Chromium开发指南2024 Mac篇(五)-开始编译Chromium》中,我们将详细讲解如何编译 Chromium。编译 Chromium 是一个复杂的过程,但通过正确的配置和步骤,您将能够顺利完成这一任务,并生成可运行的浏览器版本。无论您是为了调试、定制功能,还是进行性能优化,掌握 Chromium 的编译过程都是至关重要的。
通过本指南,您将学会如何进行编译前的配置、解决编译过程中可能遇到的问题,并最终成功编译出 Chromium。敬请继续关注我们的系列指南,进一步掌握 Chromium 开发的完整流程。
2.使用GN工具生成构建文件
2.1 什么是GN?
GN(Generate Ninja)是 Chromium 项目使用的一种元构建工具,用于生成 Ninja 构建文件。Ninja 是一种小而快的构建系统,可以非常高效地处理大型项目的编译任务。本文将介绍如何使用 GN 工具生成 Chromium 项目的构建文件,并配置编译参数,以满足不同的开发和发布需求。
2.2 生成构建文件
在成功拉取 Chromium 源代码后,你会看到一个 src 文件夹,这里就是我们所需的 Chromium 源码。接下来,我们需要通过 GN 工具生成 Chromium 编译项目的构建文件。
gn gen out/Default
如果命令成功执行且显示正常信息,则说明整体环境配置没有太大问题。

2.3 修改args.gn文件
为了实现特定的编译目标,我们需要修改 out/Default 目录中的 args.gn 文件。args.gn 文件用于调整编译 Chromium 时的一些参数。以下是一些常用的参数设置:
2.3.1 is_debug = true
开启debug模式,这个模式会增大量的dcheck检查和输出日志一般是进行深度开发时使用
2.3.2 is_component_build = true
开启小库编译模式加快编译速度,但是这个会导致编译release发行时产生多余的库文件一般只有深度开发时使用
ps:在Mac上,不建议使用这个编译选项,如果您需要深度调试的化还是建议开启
# 开启debug模式,这个模式会增大量的dcheck检查和输出日志一般是进行深度开发时使用
is_debug = true# 开启小库编译模式加快编译速度,但是这个会导致编译release发行时产生多余的库文件一般只有深度开发时使用
# ps:在Mac上,不建议使用这个编译选项,如果您需要深度调试的化还是建议开启
is_component_build = flase

3.编译Chromium
好的,我们来到激动人心的一步,现在我们要编译Chromium啦~
我们可以使用下面的命令进行编译
#编译Chromium
autoninja -C ./out/Default chrome

因为项目较大,请耐心等待编译完成,根据电脑性能一般需要3-6小时
编译成功后,您可以在 out/Default文件夹下 找到Chromium.app应用文件,可直接运行,也可以拷贝出来进行分发。
4.总结
在本篇指南中,我们详细介绍了如何在 macOS 环境下开始编译 Chromium。通过正确配置 GN 工具生成构建文件,调整 args.gn 文件中的编译参数,并使用 autoninja 命令进行编译,您成功地编译出了可运行的 Chromium 浏览器版本。尽管编译过程复杂且耗时,但通过本文提供的详细步骤和建议,相信您已经掌握了编译 Chromium 的关键技能。
接下来,在《Chromium开发指南2024 Mac篇(六)-Chromium项目编译小技巧》中,我们将分享一些实用的小技巧,帮助您优化编译过程、解决常见问题,并提高开发效率。敬请期待,通过我们的系列指南,您将全面掌握 Chromium 开发的完整流程和最佳实践。
相关文章:
Chromium 开发指南2024 Mac篇-开始编译Chromium(五)
1.引言 在之前的指南中,我们已经详细介绍了在 macOS 上编译和开发 Chromium 的准备工作。您学会了如何安装和配置 Xcode,如何下载和配置 depot_tools,以及如何获取 Chromium 的源代码。通过这些步骤,您的开发环境已经搭建完毕&am…...
2024.06.11校招 实习 内推 面经
绿*泡*泡VX: neituijunsir 交流*裙 ,内推/实习/校招汇总表格 1、校招 | 美团2025届北斗计划正式启动(内推) 校招 | 美团2025届北斗计划正式启动(内推) 2、实习 | 沃尔沃汽车 Open Day & 实习招聘 …...
linux 免密备份文件到另外一台服务器
简单说,A服务器备份到B服务器。就是将A服务器的文件复制传输到B服务器进行备份。这种场景可以应用到简单的定时器自动备份数据文件。 具体步骤: 1、A服务器上执行以下命令并一直按回车键,然后在/root/.ssh目录中可以看到私钥和公钥。其中id…...
【html】用html写一个博物馆首页
效果图: 二级导航: 源码: <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><l…...
【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【13】压力压测JMeter-性能监控jvisualvm
持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【13】压力压测JMeter-性能监控jvisualvm 压力测试概述性能指标 JMeter基本使用添加线程组添加 HTTP 请求添加监听器启动压测&查看分析结果JMeter Address Already in use 错误解决 性…...
【python】python海底捞门店营业数据分析与可视化(数据集+源码+论文)【独一无二】
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…...
利用机器学习弄懂机器学习!
第一个问题:什么是机器学习? 机器学习是人工智能的一个子领域,它使计算机系统能够从经验中学习并改进其性能(和人一样,人也是从经验当中,实现自己的不断地学习和提升)。简单来说,机…...
Ubuntu22.04系统安装及配置
文章目录 一、选择“安装” 二、选择“语言” 三、安装器更新 四、键盘布局 五、选择安装类型 六、网络配置 七、代理设置 八、镜像地址 九、磁盘划分 十、设置用户名、主机名、登录密码 十一、升级到Ubuntu Pro 十二、SSH设置 十三、选装软件包 十四、开始安装进…...
抖音多功能全自动引流工具,支持评论关注私信留痕点赞等,让你的抖音粉丝暴涨!
随着短视频行业的火爆,越来越多的人开始关注抖音这个平台。然而,如何在抖音上获得更多的关注和粉丝,成为了许多人面临的难题。为了帮助大家解决这个问题,今天我们将为大家推荐一款抖音多功能全自动引流脚本,这款脚本可…...
day3-xss漏洞(米斯特web渗透测试)
day3-xss漏洞(米斯特web渗透测试) XSSXss种类三种反射型1.反射型xss2.存储型xss3.DOM型xss XSS Xss有一部分是前端的有一部分不是前端的,我们来看一下,昨天的HTML注入修复方法应灵活使用。 HTML注入是注入一段HTML,那…...
HTML中的<iframe>标签及其属性
<iframe>标签在HTML中用于嵌入另一个HTML页面。它提供了一种在当前页面内展示外部内容的方式,而无需离开当前页面。以下是<iframe>的一些常用属性: src:指定要嵌入的页面的URL。width 和 height:设置iframe的尺寸。n…...
Elastisearch集群(单节点)
目录 一、文件下载 二、创建linux es用户 三、上传、解压canal、es、kibana 四、配置es通讯证书(生成证书给es配置使用) 五、配置elastisearch 六、修改系统配置 七、添加ik分词器支持(可选) 八、给文件赋值权限 九、设置…...
Vue78-缓存路由组件
一、需求 路由切走的时候,组件会被销毁,路由切回来,组件被挂载! 需要:路由切走的时候,组件不会被销毁。 二、代码实现 若是不加include属性,则在<router-view>里面展示的路由,…...
windows设置开机启动项
将文件放到下面路径即可实现每次开机启动 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup...
【Linux】 yum学习
yum介绍 在Linux系统中,yum(Yellowdog Updater, Modified)是一个用于管理软件包的命令行工具,特别适用于基于RPM(Red Hat Package Manager)的系统,如CentOS、Fedora和Red Hat Enterprise Linux…...
Mac数据如何恢复?3 款最佳 Mac 恢复软件
如果您认为 Mac 上已删除的文件永远丢失了,那您就大错特错了!实际上,即使您清空了 Mac 上的垃圾箱,也有许多解决方案可以帮助您恢复已删除的文件。最好的解决方案之一是 Mac 恢复删除软件。最好的Mac 恢复删除应用程序可以轻松准确…...
基于SpringBoot+Vue航空票务管理系统设计和实现(源码+LW+调试文档+讲解等)
💗博主介绍:✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还…...
Gnu/Linux 之 C 语言函数列表初步整理
Linux为C语言编程提供了丰富的函数库,这些函数库覆盖了从基本输入输出、文件操作、字符串处理到系统调用等各个方面。以下是一些常见的Linux C函数示例: 输入输出函数 printf(): 输出格式化的字符串到标准输出。scanf(): 从标准输入读取格式化的数据。…...
Java学习 (二)关键字、标识符、数组
一、关键字 我们第一章案例中有很多关键字,比如class、public、static、void等,这些关键字依旧被java定义好了,可以拿来用,不需要死记硬背,按照官方文档查询即可 #官方文档 https://docs.oracle.com/javase/tutorial/j…...
数据结构与算法笔记:基础篇 - 初始动态规划:如何巧妙解决“双十一”购物时的凑单问题?
概述 淘宝的 “双十一” 购物节有各种促销活动,比如 “满 200 元减 50元”。假设你女朋友购物车中有 n 个(n > 100)想买的商品,它希望从里面选几个,在凑够满减条件的前提下,让选出来的商品价格总和最长…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
Python爬虫实战:研究Restkit库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...
