准备工作: 1、翻墙的梯子(必须,因为需要访问国外服务器进行数据下载和同步)

2、安装VS2019,且请务必把安装路径设置为C盘(最好默认安装),这样可以省掉很多不必要的环境变量配置。(一开始我VS安装在D盘,走了很多弯路也没成功,win10sdk可以放D 盘)

3、安装git

4、安装win10sdk的版本10.0.20348 .0(具体需要哪个版本主要由后面的../src/bulid/toolchain/win/setup_toolchain.py中的版本要求决定)

正式开始:

1、创建一个文件夹并进到文件夹下:D:\work

2、下载depot-tools.zip包(下载chromium源码的一个工具, 里面自带有python工具, 如果已经安装了python,建议先卸载掉,否则会出现一些报错,改起来麻烦)。下载地址:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
成功后,进入D:\work\depot_tools如下图

3、添加D:\work\depot_tools 到系统环境变量,且一定要将其放在path的最前面(避免踩坑),为后期做准备。如图

4、其他需要设置的系统环境变量:

DEPOT_TOOLS_WIN_TOOLCHAIN        0

GYP_GENERATORS    msvs-ninja, ninja

GYP_MSVS_VERSION    2019

vs2019_install   C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\   (具体请看安装VS2019的位置)

WindowsSdkDir        D:\Windows Kits\10     (这里具体看你VS2019的SDK在什么地方,主要看对应目录下是不是有这些文件),如下图

5、打开cmd 进入D:\work\depot_tools下,

输入命令:gclient                //更新depot_tools到最新版本

特别注意:如果梯子是需要设置代理IP和端口的,请先通过命令去设置好代理(网上有告诉怎么设置的,这里由于我的梯子并不需要设置代理,所以就不设置了)

depot_tools更新完后将出现如下截图:

6、在D:\work\下创建一个新的chromium,然后 cd D:\work\chromium, 

然后执行 fetch --no-history chromium         //下载chromium源码

如下图,说明已经开始了,这里需要漫长的等待,我用2M/s的梯子,同步chromium源码差不多耗时120分钟,文件总大小在25.5G左右

7、下载中如果发生了中断,想继续执行要使用
gclient sync --with_branch_heads

8、随后cmd进入D:\work\chromium\src 目录中
gclient runhooks          //这一步有时可以省略,担心的话也可以执行一下

9、然后生成项目编译文件,只是产生需要的目录(所以这个可以不用重复执行)
gn gen out\debug  (大概耗时20秒)

10、最后一步,使用ninja工具编译
ninja -C out/debug chrome

执行时出现一个错误:FAILED: v8_context_snapshot.bin,如下图

解决办法是找到D:\work\chromium\src\base\win\com_init_check_hook.h,注释掉下面红色框中的定义就可以了。

编译成功后,将会在D:\work\chromium\src\out\debug\下出现一个all.sln的文件,用vs2019打开就可以看到源码了。同时在D:\work\chromium\src\out\debug\下也会生成一个chrome.exe的浏览器,到这里就算debug版本的编译成功了

注意:这里生成的将是开发版模式的浏览器,有些电脑运行可能会是黑屏的(原因是GPU不支持硬件加速,解决办法是生成正式版);如果要生成正式版的,需要修改.gclient和args.gn文件,我在这简单将下release正式版的生成吧

1、找到D:\work\chromium\.gclient ,打开后添加配置 "checkout_pgo_profiles": True,

2、打开翻墙梯子,进入D:\work\FFBrowser\chromium后,用cmd执行

gclient sync --with_branch_heads

3、进入src下,执行gn gen out\release --ide=vs --args=""

4、执行设置参数命令:gn args out\release

5、弹出来的文件窗口内添加下面的配置

is_debug = false

target_cpu = "x86"

is_official_build = true

symbol_level = 0

blink_symbol_level=0

v8_symbol_level = 0

enable_nacl = false

ffmpeg_branding = "Chrome"

proprietary_codecs = true

添加好后关闭文件窗口,cmd将自动往后执行

6、执行编译命令:ninja -C out/release mini_installer

成功后将会在src/out/release下得到一个mini_installer.exe的安装包,安装打开后,查看浏览器的about就可以看到显示的是正式版浏览器了

chromium的下载和编译(流程详解)相关推荐

  1. jenkins插件调用job_Jenkins迁移job插件Job Import Plugin流程详解

    Jenkins迁移job插件Job Import Plugin流程详解 由于又开了新机器所以又要重新布置Jenkins从老项目拷贝过来,发现Job Import Plugin 这个插件更新了,和以前的 ...

  2. 【正点原子Linux连载】第三十二章 U-Boot启动流程详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  3. View的绘制-draw流程详解

    目录 作用 根据 measure 测量出的宽高,layout 布局的位置,渲染整个 View 树,将界面呈现出来. 具体分析 以下源码基于版本27 DecorView 的draw 流程 在<Vi ...

  4. U-Boot启动流程详解

    参考:U-Boot顶层目录链接脚本文件(u-boot.lds)介绍 作者:一只青木呀 发布时间: 2020-10-23 13:52:23 网址:https://blog.csdn.net/weixin ...

  5. 推荐系统整体架构及算法流程详解

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 知识图谱在美团推荐场景中的应用实践 搜索场景下的智能实体推荐 机器学习在B站推荐系统中的应用实践 小红书推荐系统 ...

  6. iOS APP上架流程详解

    iOS APP上架流程详解 青葱烈马 2016.04.28  前言:作为一名 iOS 开发工程师, APP 的上架是必备技能. iOS 上架的流程主要可以简单总结为: 一个包,两个网址,三个证书, 一 ...

  7. 非常好的Linux编译内核详解 - -

    转载: http://blog.chinaunix.net/uid-263488-id-2138150.html 非常好的Linux编译内核详解 - - 一.内核简介  内核,是一个操作系统的核心.它 ...

  8. 《MySQL安装流程详解》及《MySQL安装一直失败,重新安装显示已安装》

    <MySQL安装流程详解>及<MySQL安装一直失败,重新安装显示已安装> 本文由博主经过查阅网上资料整理总结后编写,如存在错误或不恰当之处请留言以便更正,内容仅供大家参考学习 ...

  9. Linux卸载安装bind,Bind编译安装详解

    Bind编译安装详解 Bind是一款开放源码的DNS服务器软件,由美国加州大学Berkeley分校开发和维护的,全名为Berkeley Internet Name Domain它是目前世界上使用最为广 ...

  10. 多图上传以及多图排序的方法及流程详解

    多图上传以及多图排序的方法及流程详解 ps:本人亲测,阿里云2核4G5M的服务器性价比很高,新用户一块多一天,老用户三块多一天,最高可以买三年,感兴趣的可以戳一下:阿里云折扣服务器 所用插件包打包下载 ...

最新文章

  1. [CF522D]Closest Equals
  2. JavaScriptSerializer-枚举的JSON序列化为字符串
  3. 垂直领域出海,多语言预训练好使吗?
  4. java 实现自旋锁_java自旋锁的代码实现
  5. Jmeter 新手教程
  6. php 明天凌晨,用php判断时间戳来输出刚刚,分钟前,小时前昨天和时间
  7. qt中dll缺失以及无法启动程序的正确解决方法
  8. 共模电感适用的频率_详解消灭EMC的三大利器:电容器/电感/磁珠!
  9. echarts雷达图
  10. 《信号与系统》(吴京)部分课后习题答案与解析——第七章(PART2)(系统及系统分析)
  11. 推荐一款在线文件对比工具
  12. ul1581标准_UL1581标准中文版-2019电线电缆和软线的UL中文版标准.pdf
  13. centos7快速搭建KMS服务器
  14. BOSS直聘下载自己的简历要钱!而且是PDF格式 - 解决方法
  15. linux环境包执行报错,linux环境下部署kettle,执行kitchen.sh文件报错后提示安装 libwebkitgtk 所需rpm包...
  16. ksu7对讲机调频软件_万能对讲机写频软件
  17. Word技巧:如何使用正则表达式高效替换
  18. appium inspect session closed due to inactivity
  19. hbase数据库_实验目的
  20. Java--配置环境变量

热门文章

  1. Excel·VBA单元格重复值标记颜色
  2. 如何使用MATLAB coder将MATLAB代码转换成C/C++语言(详细图文教程)
  3. 你这手写vue2.x/3.x的响应式保熟吗?
  4. SAP中一次性客户及供应商的应用浅晰
  5. 在线考试系统html源码,jQuery在线答题考试系统代码
  6. Linux下用imageMagick对图片进行一些操作,非常建议方便的一个图片处理工具。
  7. 贡献度分析--帕累托图
  8. 从产品经理招聘信息分析现代产品经理职责
  9. springboot旅游公司网站毕业设计源码110929
  10. Vue事件修饰符——.prevent 和.passive