Windows10下编译chromium
一、准备工作
1、网络要求
需访问外网。极其重要,稳定可靠的梯子。否则后期下载超过10G的代码将是一场噩梦。
2、系统要求
- 64位Intel机器,至少8GB内存,建议16GB内存以上。
- 硬盘空间至少100GB,NTFS格式。 FAT32 不可以。
- Visual Studio 2017 (>=15.7.2) ,推荐 VS2019 (>=16.0.0)。
- Windows 7以上,我使用的是Windows10。
二、主要内容
1、安装win10系统。
2、安装Visual Studio 2017社区版。
默认安装路径不建议更改,后续Running hooks时可能报错,也可能我的环境变量设置不正确。
$ PATH_TO_INSTALLER.EXE ^ --add Microsoft.VisualStudio.Workload.NativeDesktop ^ --add Microsoft.VisualStudio.Component.VC.ATLMFC ^ --includeRecommended
我的windows10系统不支持安装vs2019,因为我的是ghost版的,也无法自动更新系统。
3、安装版本10.0.18362或更高版本的Windows 10 SDK。
可以单独安装它,也可以在Visual Studio安装程序中选中相应的框。还必须安装SDK调试工具。
如果Windows 10 SDK是通过Visual Studio安装程序安装的,则可以通过以下方式安装它们:控制面板→程序→程序和功能→选择“ Windows软件开发工具包”→更改→更改→选中“ Windows调试工具” ”→更改。
4、安装配置 depot_tools
下载 depot_tools,解压这个压缩包,不要用压缩工具打开后用拖拽的方式获取文件,这样会漏掉隐藏的 .git 文件。
修改 Path环境变量,修改系统环境变量中的 Path ,在最前面添加depot_tools解压后所在目录,如C:\depot_tools。
添加 DEPOT_TOOLS_WIN_TOOLCHAIN 环境变量,并将值设为 0。
新打开一个 cmd 命令行窗口(保证环境变量设置生效),执行 gclient 命令(不带任何参数),此过程将安装 msysgit and python。
5、下载代码
配置git。
$ git config --global user.name "My Name" $ git config --global user.email "my-name@chromium.org" $ git config --global core.autocrlf false $ git config --global core.filemode false $ git config --global branch.autosetuprebase always
创建源码目录并进入。
$ mkdir chromium && cd chromium
下载代码。想节省时间,加了--no-history
选项。
$ fetch --no-history chromium
下载过程耗时较长,只要网络稳定可以下载成功,但是下载完执行Running hooks时坑比较多。期间网上查过,分析过python代码,最后通过重新安装vs2017,设置若干环境变量得以解决。
GYP_GENERATORS = msvs-ninja,ninja
GYP_MSVS_OVERRIDE_PATH = C:\Program Files (x86)\Microsoft Visual Studio\2017\Community
GYP_MSVS_VERSION = 2017
vs2017_install = C:\Program Files (x86)\Microsoft Visual Studio(应该无用)
WINDOWSSDKDIR = C:\Program Files (x86)\Windows Kits\10
6、编译配置
进入 src 目录,执行后续操作。
chromium 是用 Ninja 编译的,编译前首先要有 .ninja 描述文件,而这个文件又是通过 gn 这个工具生成的(已经有了,自带的)。
下面是几种生成方式,根据你的需要选择一种:
gn gen out\Default,将编译后的结果放到out目录下的Default中,out是固定的写法,Default可以自己取名;
gn gen --ide=vs out\Default,这个命令会在Default目录下生成all.sln,用vs studio中打开这个文件就可以查看调试chromium的源码了;
gn gen --ide=vs --filters=//chrome out\Default,因为源码中有上千个项目,filters可以设置只生成你感兴趣的项目。
我的执行过程如下:
我第一次执行gn gen out/wzg时报错了,因为WINDOWSSDKDIR环境变量设置错误了。WINDOWSSDKDIR环境变量修改为C:\Program Files (x86)\Windows Kits\10后,执行成功。
然后我执行gn gen --ide=vs out\vs2017也成功了。
执行devenv out\vs2017\all.sln失败,提示devenv不是指令。
将C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE添加到环境变量PATH中第二位置。
再次执行devenv out\vs2017\all.sln,vs2017卡死,可能需要加载太多文件,我的笔记本配置太Low了。
最后执行了如下指令:
gn gen --ide=vs --filters=//chrome --no-deps out\vsmin
7、编译chrome
执行如下指令。从14:45至24:00才编译完成。
ninja -C out/vsmin chrome
8、启动chrome
进入D:\chromium\src\out\vsmin,打开chrome.exe,成功启动浏览器。
参考资料:
参考官方链接:
https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md
参考其它链接:
http://www.yka365.com/articles/2020/01/09/1578555738486.html
https://note.youdao.com/ynoteshare1/index.html?id=a75f214006c7e47641f2689c65cdae1c&type=note
https://blog.csdn.net/Vincent95/article/details/78469807
https://juejin.im/post/5a45ab5651882525ab7c17ef
https://segmentfault.com/q/1010000008147029/a-1020000008154558