chromium 46 编译chromium老版本流程

这篇具有很好参考价值的文章主要介绍了chromium 46 编译chromium老版本流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

01 基本信息

官网老版本获取流程:https://chromium.googlesource.com/chromium/src/+/main/docs/building_old_revisions.md

有些老项目,使用的是稍微老一点的chromium版本,为了做比较全面的对比和研究,处理官网下载历史版本外,有时,可能需要编译对应的老版本。这里以 57.0.2987.98 为例,描述 windows版本编译过程。

首先,需要安装 vs2015 update3,winsdk,winwdk。
winsdk 版本号:10.0.14393.795,但安装目录的版本号是 10.0.14393.0
winwdk 的安装目录是 C:\Users\soft\Downloads\Windows Kits\10\WDK

注意,windows上一定要按照wdk的。并且要安装全。

02 代码下载步骤

该步骤适合win10系统安装多个版本的vs、sdk的情况。
测试系统的win10 安装了 vs2005-vs2022 各个版本的vs,及多个版本的sdk。

02.00 VPN

必须准备vpn

02.01 设置环境变量

注意1,为了不影响系统环境,建议直接使用命令行设置环境变量,不要在系统环境变量中设置。尤其是系统有多种开发环境时。

注意2,如果系统安装了多个vs版本。要使用 vs 指定的vs的命令行环境。

A 用 vs2015的 VS2015 的 MSBuild 命令提示符 打开命令行(为了默认使用该版本的vs环境)
chromium历史版本,chromium,chromium

B 在命令行窗口设置环境变量

set GYP_MSVS_VERSION=2015
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio 14.0
set GYP_GENERATORS=ninja,msvs-ninja
set WDK_DIR=C:\Users\soft\Downloads\Windows Kits\10\WDK
set VS_CRT_ROOT=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\crt
set PATH=%cd%\depot_tools;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64;%PATH%

注意,一定要把 depot_tools 设置到path的最前面。并且,这样设置之后,要在当前目录下运行fetch命令,也就是 %cd% 代码是当前路径,否则,使用绝对路径。如果使用 %cd%,记得后面在运行 gclient sync,gclient runhooks 之类的命令要在当前路径。

chromium历史版本,chromium,chromium

02.02 下载 depot_tools 并切换到历史版本

depot_tools 需要和 chromum版本对应。

# 下载 depot_tools
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
cd depot_tools
# 通过 chrome57 发布版本的时间,切换到大致时间的版本
git checkout 6db8ac7 -b 20170131

下图已经下载,且切换好了对应历史提交。
chromium历史版本,chromium,chromium

如何切换到历史版本

比如: 要查找 chromium57 版本,可以从 https://www.chromium.org/developers/calendar/ 查到 chromium 57 版本的发布时间是 57 Jan 19th, 2017
则在 depto_tools 中用 git map 命令查找过滤,如下查找出3条记录,当然,也可以能查不到当天的,可以用更早一些的日志来查找。

git map | findstr 2017-01-19
* [31m[1m0fe50fc42f[39m[49m[0m     [33m2017-01-19[39m[49m[0m ~ Roll recipe dependencies (trivial).
* [31m[1m06dba1b159[39m[49m[0m     [33m2017-01-19[39m[49m[0m ~ Add JS to git cl format.
* [31m[1m833c94c6fb[39m[49m[0m     [33m2017-01-19[39m[49m[0m ~ Create recipe_modules/gerrit to interact with gerrit REST API

02.03 更新 depot_tools

depot_tools当前目录下运行 gclient --version,来更新指定版本的 depot_tools
更新后,depot_tools一般800MB+。更新成功的标志是没有显示错误,且正确显示版本号。

02.04 设置git参数

# 更新好 depot_tools 后,要设置一下git 参数
git config --global user.name "5455945"
git config --global user.email "5455945@gmail.com"
git config --global core.autocrlf false
git config --global core.filemode false
git config --global color.ui true
git config --global branch.autosetuprebase always
:: 这个配置要结合自己的实际内存
git config --global core.deltaBaseCacheLimit 2g

02.05 下载指定版本

:: 下载 main 分支, 一般不编译main 分支,不要runhooks

fetch --nohooks --no-history chromium

:: 进入代码目录
cd src

:: 拉取指定tag(57.0.2987.98),(不带历史记录 --depth 1)
git fetch https://chromium.googlesource.com/chromium/src.git +refs/tags/57.0.2987.98:b57.0.2987.98 --depth 1

:: 切换到想要的分支或者tag
git checkout b57.0.2987.98

:: 在 src 目录外运行 gclient
cd ..
:: 下载完成,或者下载失败,已经有.gclient文件,可以用下面命令
:: gclient sync 使第三方库和主库同步(注意 -D 删除前面下载main的时候的多余第三方库)
gclient sync -D --nohooks --with_branch_heads --with_tags --output-json="log.json"

:: 查看是否有残留内容,非必须,也可遇到问题再尝试这个动作
cd src
git status
:: 如果有残留的内容,使用 git clean df(会清除多余的第三方库) 清理后,再同步一次,避免有误删除第三方库
git clern -df
cd ..

gclient sync -D --nohooks --with_branch_heads --with_tags --output-json="log.json"
:: 同步依赖工具,编译工具和必要的库
gclient runhooks # 或者 gclient runhooks --force

错误1 gclient sync | gclient runhooks 出错,删除 src/buildtools/win/gn.exe 后,再 gclient runhooks 即可。

主要是因为 脚本没有成功删除 src/buildtools/win/gn.exe 引起的。

Hook 'download_from_google_storage --no_resume --platform=win32 --no_auth --bucket chromium-gn -s src/buildtools/win/gn.exe.sha1' took 51.90 secs

02.06 编译版本

生成 工程文件及编译

:: 生成DebugX64工程
gn gen out/DebugX64 --ide=vs2015 --winsdk=10.0.14393.0 --args="target_os=\"win\" target_cpu=\"x64\" 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=false enable_nacl=false enable_mse_mpeg2ts_stream_parser=true enable_hls_sample_aes=true enable_ac3_eac3_audio_demuxing=true "
:: 编译DebugX64版本
ninja -C out\DebugX64 chrome

:: 生成 ReleaseX64 工程
gn gen out/ReleaseX64 --ide=vs2015 --winsdk=10.0.14393.0 --args="target_os=\"win\" target_cpu=\"x64\" is_component_build=false is_debug=false is_official_build=true 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_mse_mpeg2ts_stream_parser=true enable_hls_sample_aes=true enable_ac3_eac3_audio_demuxing=true "
:: 编译ReleaseX64版本,且编译mini_installer.exe
ninja -C out\ReleaseX64 mini_installer

03 相关错误及解决

03.01 错误1,runhooks 错误

gclient sync | gclient runhooks 出错,删除 src/buildtools/win/gn.exe 后,再 gclient runhooks 即可。
错误现象:

Hook 'download_from_google_storage --no_resume --platform=win32 --no_auth --bucket chromium-gn -s src/buildtools/win/gn.exe.sha1' took 51.90 secs

03.02 错误2 编译是出现如下错误:

ninja -C out\DebugX64 chrome
ninja: Entering directory `out\DebugX64'
ninja: error: '../../third_party/vulkan-validation-layers/src/loader/cJSON.c', needed by 'obj/third_party/angle/src/vulkan_support/vulkan_loader/cJSON.obj', missing and no known rule to make it

是因为依赖关系错误引起的,参见官网说明: https://bugs.chromium.org/p/chromium/issues/detail?id=685433&desc=2
代码修改位置: https://chromium.googlesource.com/chromium/src/+/57.0.2987.10/DEPS#1142

依赖关系搞错了,
chromium57\src\DEPS 中的 DEPS.chromiumsrc/third_party/angle 顺序调换一下即可。(调换之后,第三方依赖由76个变成81个。)

recursedeps = [
  'src/buildtools',
  'src/third_party/android_tools',
  [
    #'DEPS.chromium',
    'src/third_party/angle',
    'DEPS.chromium'
  ]
]

03.03 错误3 消除 error C2220: 警告被视为错误

出现如下错误,需要警用警告,优先在 公共部分加,其次在发生问题的工程中加

e:\banma\chromium572\src\media\formats\mp2t\es_parser_h264.cc(93) : error C2220: 警告被视为错误 - 没有生成“object”文件
e:\banma\chromium572\src\media\formats\mp2t\es_parser_h264.cc(93) : warning C4706: 条件表达式内的赋值
[20/12700] CXX obj/third_party/WebKit/public/offs..._mojo_bindings/offscreen_canvas_surface.mojom.obj
ninja: build stopped: subcommand failed.

公共部分一般到 src\build\config\BUILD.gn 或者 src\build\config\win\BUILD.gn 下面设置。
工程的话,一般可以到项目目录的根目录查找,比如: src\media\BUILD.gn

在 cflags = [] 中加入 “/wd4706”,或者在设当的位置加入 cflags += [] 中加入 “/wd4706”。

这里直接在 src\media\BUILD.gncflags = [] 中加入即可。cflags = ["/wd4706"]

03.04 修正,删除 include 信息

删除 build/toolchain/win/BUILD.gn 文件中的 /showIncludes
主要是不要在编译时,显示过多的include信息

03.05 修正 指定本地 sdk 版本号

如果本地有多个sdk版本,并且 gn gen 的 winsdk 参数无效(–winsdk=10.0.14393.0),可以强制替换。

修改 build/toolchain/win/setup_toolchain.py,替换 set 命令默认的 sdk 版本号(10.0.22000.0)为目标版本号(10.0.14393.0)

        #env[var.upper()] = setting
        env[var.upper()] = setting.replace('10.0.22000.0', '10.0.14393.0')

本机安装了很多sdk版本。
chromium历史版本,chromium,chromium

03.06 错误6 出现如下错误:

FAILED: obj/media/media/es_parser_adts.obj
ninja -t msvc -e environment.x64 -- "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64/cl.exe" /nologo /FC @obj/media/media/es_parser_adts.obj.rsp /c ../../media/formats/mp2t/es_parser_adts.cc /Foobj/media/media/es_parser_adts.obj /Fd"obj/media/media_cc.pdb"
e:\banma\chromium57\src\media\formats\mp2t\es_parser_adts.cc(257): error C2039: “min”: 不是“std”的成员
c:\program files (x86)\microsoft visual studio 14.0\vc\include\functional(945): note: 参见“std”的声明
e:\banma\chromium57\src\media\formats\mp2t\es_parser_adts.cc(257): error C3861: “min”: 找不到标识符
e:\banma\chromium57\src\media\formats\mp2t\es_parser_adts.cc(256): error C2789: “extended_samples_per_second”: 必须初 始化常量限定类型的对象
e:\banma\chromium57\src\media\formats\mp2t\es_parser_adts.cc(256): note: 参见“extended_samples_per_second”的声明
[13695/26972] CXX obj/media/media/mp2t_stream_parser.obj
ninja: build stopped: subcommand failed.

解决办法:在 src\media\formats\mp2t\es_parser_adts.cc 中,增加头文件

#include <algorithm>

03.07 运行错误

如果debug运行错误,尝试 删除 chromium的临时目录。可能是因为本地有不同版本的chromium缓存,缓存结构不兼容导致的。

删除临时目录 %localappdata%\chromium

04 运行效果

chromium历史版本,chromium,chromium

05 其它问题

用以上方式编译后,用 vs2015 打开 all.sln,发现要加载很久,调试时,需要重新编译,后来查看 out\DebugX64\ 下面的 系统dll及vs 的dll,发现使用的是 10.0.19041.1 版本的,所以做了如下调整。
10.0.19041.1 应该是实际启用版本号,而 10.0.19041.0 是对应目录。

05.01 修正 指定本地 sdk 版本号

如果本地有多个sdk版本,并且 gn gen 的 winsdk 参数无效(–winsdk=10.0.19041.0),可以强制替换。

修改 build/toolchain/win/setup_toolchain.py,替换 set 命令默认的 sdk 版本号(10.0.22000.0)为目标版本号(10.0.19041.0)

        #env[var.upper()] = setting
        env[var.upper()] = setting.replace('10.0.22000.0', '10.0.19041.0')

05.02 编译版本

生成 工程文件及编译

:: 生成DebugX64工程
gn gen out/DebugX64 --ide=vs2015 --winsdk=10.0.19041.0 --args="target_os=\"win\" target_cpu=\"x64\" is_component_build=true is_debug=true is_official_build=false remove_webcore_debug_symbols=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\" enable_nacl=false enable_mse_mpeg2ts_stream_parser=true enable_hls_sample_aes=true enable_ac3_eac3_audio_demuxing=true enable_hevc_demuxing=true enable_webrtc=true rtc_use_h264=true rtc_use_lto=true use_openh264=true enable_widevine=true media_use_libvpx=true "
:: 编译DebugX64版本
ninja -C out\DebugX64 chrome

:: 生成 ReleaseX64 工程
gn gen out/ReleaseX64 --ide=vs2015 --winsdk=10.0.19041.0 --args="target_os=\"win\" target_cpu=\"x64\" is_component_build=false is_debug=false is_official_build=true remove_webcore_debug_symbols=true google_api_key=false google_default_client_id=false google_default_client_secret=false proprietary_codecs=true media_use_ffmpeg=true ffmpeg_branding=\"Chrome\" enable_nacl=false enable_mse_mpeg2ts_stream_parser=true enable_hls_sample_aes=true enable_ac3_eac3_audio_demuxing=true enable_hevc_demuxing=true enable_webrtc=true rtc_use_h264=true rtc_use_lto=true use_openh264=true enable_widevine=true media_use_libvpx=true "
:: 编译ReleaseX64版本,且编译mini_installer.exe
ninja -C out\ReleaseX64 mini_installer

05.03 新问题及解决

指定 sdk 版本为 10.0.19041.0 后,多出一个编译错误。

FAILED: obj/third_party/crashpad/crashpad/util/util/nt_internals.obj
ninja -t msvc -e environment.x64 -- "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64/cl.exe" /nologo /FC @obj/third_party/crashpad/crashpad/util/util/nt_internals.obj.rsp /c ../../third_party/crashpad/crashpad/util/win/nt_internals.cc /Foobj/third_party/crashpad/crashpad/util/util/nt_internals.obj /Fd"obj/third_party/crashpad/crashpad/util/util_cc.pdb"
e:\banma\chromium57\src\third_party\crashpad\crashpad\util\win\nt_internals.cc(22): error C2371: “CLIENT_ID”: 重定义;不同的基类型
c:\program files (x86)\windows kits\10\include\10.0.19041.0\um\winternl.h(83): note: 参见“CLIENT_ID”的声明
[4834/26906] CXX obj/third_party/angle/src/vulkan_support/VkLayer_core_validation/core_validation.obj
ninja: build stopped: subcommand failed.

注释掉 src\third_party\crashpad\crashpad\util\win\nt_internals.cc 中的 CLIENT_ID 声明

//line 22
//struct CLIENT_ID;

06 弃用vs2015,改用vs2019

问题:对vs2015 的配置项做了适当优化后,用vs2015 update3 打开 all.sln 后,依然记载缓慢,并且特别容易崩溃。

后来直接改用vs2019(支持vs2015),打开后 all.sln 后,一切正常,调试比较顺畅。文章来源地址https://www.toymoban.com/news/detail-522031.html

到了这里,关于chromium 46 编译chromium老版本流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mac/Windows平台下载编译Chromium

    For Mac: https://chromium.googlesource.com/chromium/src/+/main/docs/mac_build_instructions.md Working with Release Branches 一 、 下载编译工具链: deptool git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git export PATH=\\\"$PATH:/Users/yumlu/code/depot_tools\\\" (不过为了后续操作方便,可以将其加入到你的 ~/.zsh

    2024年02月16日
    浏览(55)
  • Linux CEF(Chromium Embedded Framework)源码下载编译详细记录

    Linux CEF(Chromium Embedded Framework)源码下载编译 由于CEF默认的二进制分发包不支持音视频播放,需要自行编译源码,将ffmpeg开关打开才能支持。这里介绍的是Linux平台下的CEF源码下载编译过程。 Windows平台参考: 《Windows 编译CEF源码详细记录》 下载的过程非常艰辛,因为硬性要

    2024年02月14日
    浏览(52)
  • Chromium的Git版本分支合并、切换等管理

    源码同步 1)git 初始配置 2)创建目录 3)拉取代码 fetch chromium 4)同步依赖库 gclient sync 5)源码更新 进入src目录,运行 git rebase-update。 同步完成后再运行gclinet sync -D 更新第三方库等。 远程tag 创建本地相应版本支使用命令: git checkout -b 114.0.5735.134 114.0.5735.134 后面需要运行

    2024年02月08日
    浏览(39)
  • chromium 52 chrome 各个版本发布功能列表(58-84)

    From https://chromestatus.com/features ‘allow-top-navigation-by-user-activation’ iframe sandbox keyword Adds a new keyword named “allow-top-navigation-by-user-activation” for iframe sandbox, which requires a user activation (or gesture) being processed to trigger a top-level navigation. This change would enable more use cases of sandboxing untrusted

    2024年02月07日
    浏览(62)
  • cefsharp120.2.70(cef120.2.7Chromium6099.234)升级测试及其他H264版本

    此版本cefsharp 120.2.70 (cef 120.2.7) 无重大更新,因官方仓库打不开,不知道具体更新内容,已测无异常。 支持H264推荐版本:V100,V109,V111,V119版本,其他V114,V115,V108,V107 支持win7最后版本v109.x 支持NET4.5.2最后版本v114.x 请关注收藏栏目进行交流,感谢您的支持 最低支持NET4.6.2 建议用

    2024年01月25日
    浏览(58)
  • Linux shell编程学习笔记46:awk命令的由来、功能、格式、选项说明、版权、版本

    在编写Linux Shell脚本的过程中,我们经常要对Linux命令执行的结果进行分析和提取,Linux也在文本分析和提取这方面提供了不少的命令。比如我们之前研究过的cut命令。 Linux shell编程学习笔记43:cut命令 https://blog.csdn.net/Purpleendurer/article/details/135730679?spm=1001.2014.3001.5501 除了cut命

    2024年04月24日
    浏览(65)
  • Java/JDK查看版本、历史版本对照

    在准备安装Android Studio时,需要查看以前安装的JDK是什么版本的。又想到初学Java时对Java版本和JDK版本各种称呼的迷惑。因此查了一些资料,这里做个记录。 查看电脑已安装的Java/JDK版本: 键盘按键win+R,打开快捷窗口,输入cmd,回车 在控制台输入命令Java --version,适用于新版

    2024年02月05日
    浏览(46)
  • oracle官方下载历史版本JDK版本

            日常工作中由于一些特殊原因,我们需要下载指定系统指定位数指定版本的jdk,这个时候去网上搜索下载就会遇到各种坑,病毒、诱导连接、诱导关注/注册、付费、错误版本等,所以最好的办法是去官网下载,下面列举两种方式简单快捷从oracle官网下载各历史版本

    2024年02月16日
    浏览(50)
  • Kafka的历史版本对应SpringBoot版本

    截至目前(2023年),Kafka的最新版本是2.9.0,发布于2022年11月30日。Kafka的历史版本可以在Kafka官方网站的下载页面中找到。Kafka从0.8版本开始发布,经历了多个版本的迭代和升级。以下是一些比较重要的Kafka版本及其发布年份: Kafka 0.8:2013年 Kafka 0.9:2015年 Kafka 0.10:2016年 K

    2024年02月08日
    浏览(51)
  • idea中回退git历史版本并删除历史提交记录

    本篇文章主要介绍git在idea中的回退历史版本,适用场景为代码提错分支、正常回退版本都可适用。 !!!回退前先检查一下本地分支是否和远程分支对应,否则会失败!!! 1,打开idea中git历史提交窗口 快捷键 alt + 9 (有改动则是自己改的快捷键) 2,选择要回退的版本拷贝版

    2024年02月11日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包