1,实现需要能访问国外上网:
请准备一个网速快而且能顺畅链接到Google的网络环境,你可以选择用VPN,或者使用境外服务器都可以。这里我是通过阿里云购买的一台按量付费的美国服务器,配置如下:2 核CPU 8GB内存 英文版Windows 2008操作系统,这个是官方提供最低配的编译要求了,由于服务器实在太贵所以买的是最低配版。如果你想编译的更快一点建议购买更高配置的服务器。
2,开始安装VS2017:
按照官方的安装文档要求来:https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md
这里要非常注意一下,网上每年都有人写编译chromium的文章,但是官方的文档会经常更新,这样会导致以前人家写的文章会过时,很多人在没有参考官方文档的情况下盲目按照网上以前的方法去编译导致失败(当然包括我今天写的文章也有可能会过时,所以如果你想编译成功建议仔细看看官方的文档和每一个步骤)。
按照官方文档的要求需要Visual Studio 2017 (>=15.7.2) or 2019 (>=16.0.0) 去编译,我是下载了VS2017的英文企业版进行编译的,大家可以去网上搜索企业版的注册码随便找一个就可以注册成功。安装的方式有2种,一种是通过参数的方式安装,添加下面的参数进行安装:
--add Microsoft.VisualStudio.Workload.NativeDesktop ^
--add Microsoft.VisualStudio.Component.VC.ATLMFC ^
另外一种就是直接双击安装选择有包含NativeDesktop和C++,MFC选项的安装,并且安装高于10.0.17134的 Windows 10 SDK版本。
安装成功之后还需要安装:SDK Debugging Tools,英文版操作系统按照这个方法修改,打开:Control Panel → Programs → Programs and Features → 选择 “Windows Software Development Kit” → Change → Change → Check “Debugging Tools For Windows” → Change.。
完成以上步骤就已经完成了VS2017的环境搭建。
3,安装:depot_tools
下载:https://storage.googleapis.com/chrome-infra/depot_tools.zip 并且解压到你想要编译Chromium的地方,这里强调下准备编译Chromium的磁盘必须要足够空间,我建议至少100G的空间,当然越大越好。
解压好depot_tools之后,就是添加环境变量:
把depot_tools的路径加到 PATH 环境变量的最前面,如果你电脑有安装python的环境,建议先卸载。
然后再添加如下环境变量:
GYP_MSVS_VERSION=2017
DEPOT_TOOLS_WIN_TOOLCHAIN=0
GYP_MSVS_OVERRIDE_PATH="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise"
cmd 命令行在 depot_tools目录执行:gclient 安装python和git等环境
4,配置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
5,创建一个chromium目录
在chromium目录执行:
fetch chromium
下载源码,这个时间很漫长,中间断了的话,可以通过gclient sync来同步代码,我下载的时候没有断过。我下载源码和源码解压总共用了10个小时左右,用的是阿里云的不限制带宽下载速度杠杠的,但是解压花了很多时间可能是服务器CPU是2核的原因导致解压的速度太慢,建议可以买核数更高的服务器。
# 上面成功后,执行下面命令去获取所有的代码分支信息 cd src git fetch --all git fetch --tags git pull
切换到你想要编译的版本,默认下载的源码是最新版本的源码,如果你想要编译指定的版本可以这样去做:
参考:
https://omahaproxy.appspot.com/
http://www.chromium.org/developers/how-tos/get-the-code/working-with-release-branches
cd src # 在src目录 # 创建新的分支b3440 git checkout -b b3440 68.0.3440.54 cd .. # zai src的上一级目录(chromium目录),重新运行gclient同步一下当前版本的代码 gclient sync --with_branch_heads --with_tags
6,编译chromium,终于到了最核心的步骤,先跳转到src目录。
编译参数说明:
target_cpu=“x86”:指明生成的针对X86架构的CPU。
is_debug=false:指明生成的是Release版本可执行程序。
is_official_build=true:指明使用Chrome官方的编译优化建议。
proprietary_codecs:指明支持H264编码,编译时,自动H264相关组件,打包PE文件中。
enable_nacl=false:指明关闭支持NACL,这是一种Chrome插件,因为安全性,稳定性存在问题,已经很少使用了。
remove_webcore_debug_symbols=true:指明删除内核层支持调试的符号文件,这样,有助于减少文件体积,提高运行速度。
查看gn args 所有可用参数
gn 说明 https://www.chromium.org/developers/gn-build-configuration
使用例子如下:
1,到src目录先运行如下命令:
以编译Debug为例:
执行命令:
gn gen out/Debug --ide=vs2017 --filters=//chrome
在弹出的txt文件里面收入如下编译参数内容:
target_os="win" target_cpu="x86" winsdk=10.0.17134.12 is_component_build=true is_debug=true is_official_build=false google_api_key=false google_default_client_id=false google_default_client_secret=false proprietary_codecs=true media_use_ffmpeg=true ffmpeg_branding="Chrome" remove_webcore_debug_symbols=true enable_nacl=false enable_hevc_demuxing=true enable_dolby_vision_demuxing=true enable_mse_mpeg2ts_stream_parser=true enable_hls_sample_aes=true enable_ac3_eac3_audio_demuxing=true
命令执行完成之后:
再执行:ninja -C out\Debug chrome 就开始正式编译生成可执行文件。
如果你要编译成Release 版本可以按照什么的方法把Debug修改为Release,把编译参数里面的is_debug=true 改为false.
我编译一共花费了30多个小时,还是CPU的缘故,所以还是建议使用更多核的CPU来编译。
最后上一张编译成功的图片: