【chromium】WIN10编译Chromiumbb 记录;windows10 Chromium.bb环境搭建、clone、编译、VS调试;_怎么这么帅啊的博客-程序员宅基地_chromium win10 编译

技术标签: chromium  chromium.bb  chrome  浏览器  chromiumbb  

前言

  • 根据导师推荐,学习一下chromium,看书觉得有点枯燥,想搭个环境学习。
  • chromium.bb,是chromium专门的windows ports,关键是极大的简化了原版chromium的编译流程,以及针对chromium做了二进制的裁剪。
  • 注意:环境配置和编译过程出现的很多问题都是因为之前的vs之类的不在默认环境下,我又没找到在哪里改路径,所以最后一次把所有的重装在了默认路径下才通过。
  • 推荐一开始就将vs 与SDK装在默认路径下,不会出现很多我遇到的问题。

工具简介

对其中一些 Google 的工具进行简介。

  • Ninja https://ninja-build.org/
    Ninja is a small build system with a focus on speed. It differs from other build systems in two major respects: it is designed to have its input files generated by a higher-level build system, and it is designed to run builds as fast as possible.
  • GN https://gn.googlesource.com/gn
    GN is a meta-build system that generates build files for Ninja.
    GN is currently used as the build system for Chromium, Fuchsia, and related projects

环境要求

chromium.bb的官方文档,但是和chromium的一样,可能是版本问题。

  • A 64-bit Intel machine with at least 8GB of RAM. More than 16GB is highly recommended.
  • At least 100GB of free disk space on an NTFS-formatted hard drive. FAT32 will not work, as some of the Git packfiles are larger than 4GB.
  • An appropriate version of Visual Studio, as described below.
  • Windows 7 or newer.
  • 具有至少8GB RAM的64位英特尔机器。强烈建议使用超过16GB。
  • 在NTFS格式的硬盘驱动器上至少有100GB的可用磁盘空间。FAT32将无法正常工作,因为一些Git Packfiles大于4GB。
  • 如下所述,适当版本的Visual Studio。
  • Windows 7或更新。

环境配置

安装 depot_tools

下载链接

  • 下载
  • 添加 depot_tools 安装路径的环境变量 path
  • 添加 DEPOT_TOOLS_WIN_TOOLCHAIN 系统变量,并设置为0
  • 按下面命令设置自己的VS路径
    • set vs2019_install=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional

gclient

  • From a cmd.exe shell, run the command gclient (without arguments). On first run, gclient will install all the Windows-specific bits needed to work with the code, including msysgit and python.
  • If you run gclient from a non-cmd shell (e.g., cygwin, PowerShell), it may appear to run properly, but msysgit, python, and other tools may not get installed correctly.
  • If you see strange errors with the file system on the first run of gclient, you may want to disable Windows Indexing.
  • 一开始都是错误,显示无法连接到远程服务器。
  • 于是翻墙,复制对应域名试了一下可以了,再次gclient就好了。window下编译chromium
    在这里插入图片描述
    在这里插入图片描述

确定 python

After running gclient open a command prompt and type where python and confirm that the depot_tools python.bat comes ahead of any copies of python.exe. Failing to ensure this can lead to overbuilding when using gn - see crbug.com/611087.

在这里插入图片描述

拉Chromiumbb代码

git clone https://github.com/bloomberg/chromium.bb.git

  • clone 一直不行,换了各种方法。就是会断,一直断。
  • 最后使用改DNS,使用github desktop客户端clone下来了。
  • 光代码拉下来,就已经20G了。。。。好大啊
  • 在这里插入图片描述

编译Chromiumbb

生成makefile

  • 使用下面脚本,以产生ninja makefiles,以供后续编译。
      cd src
      build/runhooks.py
      build/blpwtk2.py

这里也卡住很久。

  • 首先是 error 2,查了很久是确实目录?

  • 在这里插入图片描述

  • 于是我顺着调用关系,也没找到怎么改。

  • 后来在 2020.8.7日报:编译通过chromium.bb - 龙泉寺扫地僧 的博客中看到他注释掉了verifyGN调用相关东西。

  • 应该是verifg 什么东西的时候调用出错,于是我也注释掉了,管他呢。

  • 在这里插入图片描述

  • 再跑的时候,出现了新的问题。

  • No supported Visual Studio can be found. Supported versions are: 16.0 (2019), 15.0 (2017),也就是没识别到我的VS 版本。

  • 查到有些人说是路径问题,我之前的VS不是按照默认路径来装的,于是我又开始看vs_toolchain.py

  • 最后将里面的路径都改成了绝对路径(包括VS、SDK的路径),并且手动修改了对应的的版本。

  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 最后还经过了一两个缺失dll,自己下载了几个dll 来替换后。

  • 最终才勉强用脚本生成了makefile
    在这里插入图片描述

  • 最简单的方法是,重装VS+SDK,装在默认环境下,就不用手动去改这些。ps:因为我没找到怎么不手动一个一个改。

编译

ninja -C out\shared_debug blpwtk2_all

  • 20210102全是问题。。。决定先重装所有的到默认环境下吧。
  • 20210103 重装以后,用笔记本近四个小时的编译,终于有了结果。
  • 在这里插入图片描述
  • 接着打开src\out\shared_debug>content_shell.exe 即可。
  • 可以用命令:content_shell.exe https://www.baidu.com/
  • 在这里插入图片描述
  • 好的,编译完已经有这么大了,当然还有git。
  • 在这里插入图片描述

生成 Visual Studio 解决方案

  • gn gen --ide=vs out\Default 生成了 all.sln

  • 其中的 IDE options 可以根据自己的IDE来选择;--winsdk=<sdk_version> 选择自己的sdk版本

  • 但是用vs本地调试有问题。

  • 于是不加载.sln项目,根据下面的直接加载之前编译好的.exe。

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 在这里插入图片描述

VS 加载.exe 单步调试

  1. 打开项目:content_shell.exe
  2. 直接可以点击启动直接运行。
  3. 在解决方案处右键 单步执行新实例,即可单步调试。

参考自:Debugging Chromium on Windows - The Chromium Projects
在这里插入图片描述

总结

  • 太菜了啊, 配环境就很就,又编译了很久。
  • 各种问题穷出,也有因为自己之前学习搞得乱七八糟的环境的因素,也有自己不会python 等问题,搞了很久。
  • 还有就是可能Chromiumbb不怎么更新了,文档很乱,readme 都不见了,很多都是Chromium的readme,和我看的博客里的readme都不一样。。。
  • 对于我来讲,要是所有环境都在默认路径,将会简便很多。

参考

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44503157/article/details/122275267

智能推荐

批处理Bat 中一些重要的知识点_IvanGuXXXX的博客-程序员宅基地_socflash命令

1.call socflash.bat option=lr flashtype=2 if=C:\Users\Administrator\Desktop\C1041.BC.0309\C1041.BC.0309.bin call命令调用另一个批处理程序,并且不终止父批处理程序(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)...

GCC的几个重要选项解释_普通网友的博客-程序员宅基地

GCC的几个重要选项解释详细可见:[GNU Compiler Collection (GCC)] https://gcc.gnu.org/onlinedocs/gcc/https://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html-c 编译或者汇编代码,但是不链接-S 在编译之后停止,但不汇编-E 预处理后停止,但不编译-o...

Java 面试心得分享_MrBeacon的博客-程序员宅基地

一.简历    1. 简历在写技术的时候,对所写的技术一定要注意一下几点:        1.1 不要写太多,除非你真的都会        1.2 主要技术至少是掌握(框架和一些中间件)        1.3 有些技术只是了解或者很浅的运用的话,最好不要写在上面.否则只要面试官一问,你就自求多福吧    2. 简历可以设计个性化,但不要花里胡哨    3. 简历写自我评价时,要阳光,积极上进,对技...

c# xml Attributes[ ].Value 空值 判断_guoruijun_2012_4的博客-程序员宅基地

static private bool parseXmlListInsert(XmlNodeList nodeList, string str) { try { if (nodeList != null &amp;&amp; nodeList.Count != 0) ...

每天学一点算法-动态规划算法_Q博士的博客-程序员宅基地

动态规划算法定义动态规划(Dynamic programming)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。  动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问

<新浪微博笔试1>倒置二叉树,输入为数组,层序输出_Hello World程序员的博客-程序员宅基地

给定二叉树数组,构建二叉树,进行二叉树倒置 ,层序输出https://support.leetcode-cn.com/hc/kb/article/1194353/package lzl.bishi;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;public class Wb1 { private static int[] ans; private static i

随便推点

Servlet之ServletContext获取web上下文路径、全局参数、和Attribute(域)_孤雁yi南飞的博客-程序员宅基地_context对象获取上下文参数

1)获取web上下文路径public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取ServletContext对象 //this.getServletConfig().getServlet...

WebSocket code 200 报错_guoqing2016的博客-程序员宅基地

出现这个问题主要是后台的问题在我自己配置的项目中使用了Shiro的安全框架,因为没开放访问的权限所以出现了这个报错这里开通一下访问权限就好如果不是这个问题也可以去找找后台是不是没开放权限啥的如果是地址错了直接会报404的错误,而不是 200...

Spring @Required 注解检查属性___init_的博客-程序员宅基地

Spring 配置文件中 dependency-check 依赖检查的灵活性不够,并不能满足我们所有的需求Spring还提供一种更加灵活的检查方式 @Required注解检查 但他只检查属性是否已经设置而不会测试属性是否非空下面我们看一下如何使用Spring提供的此机制首先我们需要在程序里面加上注解@Required public void setProduc

bochs调试方法与指令详解_guozuofeng的博客-程序员宅基地_bochs调试

https://blog.csdn.net/acmilanvanbasten/article/details/38852173bochs调试FAQ:一 基本调试命令1.Q:如何从引导扇区开始设置断点?A: BIOS被载入内存中运行,其引导扇区的地址一般都是在0x7c00,因为在实模式下,逻辑地址和物理地址是一一对应的,所以我们可以在启动bochs调试的命令行下输入...

《Spring Boot实战》摘录及实战_黄旺鑫的博客-程序员宅基地

Spring Boot实战第一章 入门Spring Boot最重要的四个核心:自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置。起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。命令行界面:这是Spring Boot可选特性,借此你只需要写代码就能完成完整的应用程序,无需传统项目构建。Actuator:它让你...

Hadoop_day05_MapReduce 的 Shuffle 详解(分区、排序、规约、分组)_chipeize的博客-程序员宅基地_mapreduce 规约 排序 分组

一、分区在 MapReduce 中, 通过我们指定分区, 会将同一个分区的数据发送到同一个 Reduce 当中进行处理​ 例如: 为了数据的统计, 可以把一批类似的数据发送到同一个 Reduce 当中, 在同一个 Reduce 当中统计相同类型的数据, 就可以实现类似的数据分区和统计等​ 其实就是相同类型的数据, 有共性的数据, 送到一起去处理 ...

推荐文章

热门文章

相关标签