新手菜鸟摸索——Chromium源码的获取和基于VS2019的编译

 

 

新手菜鸟摸索——Chromium源码的获取和基于VS2019的编译

最近根据公司新项目的需要,我的导师给我布置了一个研究Chromium源码并且编译的任务。作为一个刚入职的新人来说,能够在工作中学到新知识是一件很幸福的事,所以我欣然接受了这个挑战。最后,历经三个星期的网上查阅资料,疯狂踩坑,终于让我独自成功拿下!【喜大普奔】【喜大普奔】【喜大普奔】特于此记录我的摸索踩坑过程,望对有需要的求知同道者起到一些指引排坑的作用。

这里是官方给出的操作流程。


 

一、Chromium源码的拉取

前期的一些准备【整个拉取和编译下来都是必需的】

自己手动下载安装好 Git 64位和 Python3.7 64位,并且把它们的路径配置到系统环境变量中

没学过Git怎么安装和使用的可以看这里

 

1、建议还是通过科学上网的方式到官网上拉取Chromium源码项目。

(由于之前不舍得花那个钱,试着去github上拉取别人放上去的源码,费了好长一段时间拉取不说,到编译的时候各种问题出现,由于不是按照官网给出的步骤进行的,出错了都不知道怎么去检查纠正。(新手嘛,体谅一下)

 

2、科学上网后,首先需要下载depot-tools并配置环境变量。

depot-tools是由谷歌提供的一款用于拉取与管理Chromium的强大工具,我们后期将会通过它来管理与更新Chromium版本。

方法步骤:

  • 1)打开要保存depot-tools的路径目录下,右键点击 git bash,然后输入以下命令:

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

  • 2)配置系统环境变量 :把depot-tools的路径添加进系统变量的 Path中。【注意:depot-tools的路径一定要放在python的路径之前】

 

3、做好前期准备后,开始进行Chromium源码拉取

 

             进入到要保存Chromium源码的路径目录下,右键点击 git bash,输入命令:

            fetch --no-history chromium  开始获取不带历史版本的最新版本源码

            因为Chromium源码很大,大概有15G左右,因此这个过程会比较慢,可能需要十几个小时,耐心等待。大家也可以把这 

            一步放在晚上睡觉时进行。若意外中断,可以输入命令:gclient async 来进行同步到最新拉取进度,继续拉取。

 


 

二、Chromium源码的编译

 

1、安装 Visual Studio 2019 Community版 (我自己用这个版本)

  • 1)如图所示,需要安装这几个模块,勾选 Windows 10 SDK(10.0.19041.0),然后我的安装位置放在了

             H:\Program Files (x86)\Microsoft Visual Studio\2019\Community

          (后面的环境变量中需要针对这个来设置一下,若是默认的安装路径就不需要)

  • 2)为SDK安装调试工具

            值得注意的是,我们安装的SDK默认是没有安装调试工具的,所以我们还需要通过以下步骤来安装它:

            打开控制面板 –> 程序 –> 程序和功能 –> 找到并选择您安装好的SDK开发工具包 –> 更改 –> 选择change点击下一步

            –> 勾选 Debugging Tools For Windows –> 点击Change;等待安装完毕后关闭即可

           如图,18和19的都安装一下比较好(我自己的两个都安装了)

2、编译前的一些系统环境变量设置 【很重要,踩了很多坑】

变量名DEPOT_TOOLS_WIN_TOOLCHAINGYP_GENERATORSGYP_MSVS_OVERRIDE_PATHGYP_MSVS_VERSION

vs2019_install

(若是2017的就写vs2017_install)

WINDOWSSDKDIR
0msvs-ninja,ninjaH:\Program Files (x86)\Microsoft Visual Studio\2019\Community2019H:\Program Files (x86)\Microsoft Visual Studio\2019\Community

H:\Windows Kits\10

3、开始编译Chromium源码

  • 1)进入到Chromium源码项目的src目录下,右键点击 git bash。输入命令: gn gen --ide=vs out\\Default

  • 2)编译生成可执行文件,有两种方式:
  • 利用 ninja:输入命令: ninja -C out/Default chrome
  • 在 vs2019里面打开 all.sln,点击生成开始编译

       两种方式第一次编译用时都会很久,要耐心等待。推荐使用第一种方式进行编译,因为若遇到错误时,第一种方式可以中断编译,而且排查错误后,可以继续执行上述的命令来进行增量编译。而第二种方式编译出错了需要手动中断,不然会继续编译直至结束,而且不支持增量编译。

4、编译过程遇到的一个问题

本人电脑在编译中遇到的一个错误:

UnicodeDecodeError: 'gbk' codec can't decode bytes in position 18-19: illegal multibyte sequence
 

 

暂时不清楚是什么原因造成的,出错的地方是在src\build\toolchain\win\midl.py

我到出错的代码中改了很多种编码格式都是会出错。

仔细阅读这段代码后,发现该段代码的意义似乎是:若源码文件和临时的复刻输出文件没有差异,里面的内容一致的话,则编译继续进行。但若有差异,则需要比较并打印出这两个文件内容存在差异的地方,并中断退出编译。

不清楚为什么会出现差异,猜测的原因是:可能本人的电脑安装了公司的加密软件,导致生成的临时复刻文件比源码文件多了些非法字符什么的,从而致使两个文件内容有差异,进而在打印差异内容的时候,要打开临时复刻文件 tofile 时,因为某些非法字符导致编码错误。

若电脑没有安装过公司的加密软件,或许不会出现这个错误,若还是出现该错误,可以把这段判断检测性质的代码注释掉,即默认源码文件和临时复刻文件内容是一致的,有或没有差异照样进行编译。(实在是搞不清楚怎么修改这个错误,只能通过逃避错误这个下下策来解决了)

在midl.py中注释掉这段代码即可:

 

5、编译完成后,双击 out/Default/chrome.exe执行文件即可。就可以进行后续的Chromium研究调试啦,争取进一步学习,看能不能在其基础开发出一款属于自己的浏览器!

 


三、注意:

如果是拷贝别人电脑从官网上辛辛苦苦拉取来的Chromium源码到自己电脑的,请先别因为自己不需要再花money和费时间地拉取源码而感到高兴,因为即使是按照上面所述的编译准备来进行,到头来还是会出现一个错误,一个需要科学上网才能够解决的错误:

ValueError: path is on mount 'C:', start on mount 'D:'

上面的错误就是我把我电脑上拉取来的源码拷给我导师电脑上,执行 gn命令时报的错误。原因是虽然导师的电脑不用再费时去拉取源码,但一些编译时必备的小工具或者环境没有同步到,从而导致编译时默认从本地电脑的C盘去找,结果就是报出上面的错误。

解决方法:还是得要在导师电脑上科学上网,然后进入到源码项目的 src目录下, 使用 git bash,输入命令:gclient async 来进行同步那些必备的编译环境。(因为这些环境不大,所以网络好的话半小时就搞定了)

 

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值