zoukankan      html  css  js  c++  java
  • 1.编译chromium

    1. 前言

    做了两年Chromium相关的开发,最近项目遇到瓶颈,自己有点迷茫。回顾之前做的工作,发现对chromium的认识还停留在非常表面的水平。因此,一直想对之前做的做个总结,只有总结反思才能提高。

    2. 编译环境

    Label 推荐配置
    系统版本 Ubuntu 18.04 64bit
    处理器 x86_64
    内存 8GB以上
    硬盘 150GB以上空闲磁盘

    这里采用Ubuntu编译Linux版本,总体翻译自:https://chromium.googlesource.com/chromium/src/+/master/docs/linux_build_instructions.md
    如果想编译Windows版本,请自行查阅google文档:https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md

    此外由于谷歌很多网站国内无法访问,还需自行准备上网工具。

    3. 安装工具软件

    3.1 git

    安装git:

    $ sudo apt-get install git
    

    做一下配置:

    git config --global user.name "Your Name"
    $ git config --global user.email "your-email"
    $ git config --global core.autocrlf input
    $ git config --global core.filemode false
    $ git config --global branch.autosetuprebase always
    

    需要提一下core.autocrlf的配置主要是解决Linux和Windows跨平台协作时文件换行符不统一的问题。它有三种取值:

    • input: git在提交时把CRLF转换成LF,签出时不转换;
    • true: 提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF;
    • false: 提交和签出代码均不会做更改。

    在Linux上是建议设成input,windows上设置成true(当然如果你只是开发windows程序,设成false就可以了)。

    3.2 python 2.7

    sudo apt-get install python
    

    3.3 depot_tools

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

    添加到系统环境,编辑~/.bashrc,添加:

    export PATH="$PATH:/path/to/depot_tools"
    

    然后生效配置:source ~/.bashrc

    此时你可以使用gclient等命令。

    4. 获取chromium源码

    首先创建一个chromium目录用于存放代码:

    mkdir ~/chromium && cd ~/chromium
    

    运行depot_tools的fetch工具来检出源码及其依赖项:

    fetch --nohooks chromium [--no-history]
    

    使用--no-history会让下载的源码不带提交历史信息,是最新的主分支代码,代码量会小很多。不使用该选项会获取完整历史信息的chromium源码。

    下载过程可能无法一番风顺,经常出现下载中断的情况,此时请使用:

    gclient sync --nohooks
    

    以继续下载。

    下载完成之后,进入到代码目录:

    cd src
    

    如果你没有使用--no-history参数,那么此时你可以选择切换指定分支,可以参考:https://dev.chromium.org/developers/calendar 找到当前最新的stable分支。以 77.0.3865.90为例:

    git fetch --tags
    git checkout -b stable_77 tags/77.0.3865.90
    gclient sync --with_branch_heads --nohooks --job 16
    

    5. 安装依赖项

    如果你是在Ubuntu下进行编译,那么还在编译之前需要安装一些依赖工具,google已经写好了脚本:

    build/install-build-deps.sh
    

    6. 运行hooks

    hook直译是钩子。在chromium中代码编译是通过gclient来管理的,gclient 的核心功能是将项目中由DEPS文件定义的所有git仓库拉取到指定的目录或者运行指定脚本。为此添加了了hook功能。运行hook也即表示当前代码并不完整,你可能需要的额外的二进制文件或者运行指定脚本。

    gclient runhooks
    

    7. 编译

    首先需要设置编译选项:

    gn args out/Default
    

    这条命令会打开一个文件,我们需要在该文件中加入编译选项:

    is_debug = false
    symbol_level = 0
    enable_nacl = false
    remove_webcore_debug_symbols = true
    
    #ffmpeg setting
    ffmpeg_branding = "Chrome" 
    proprietary_codecs = true
    

    可以通过gn args out/Default --list来查看具体有哪些编译选项可选。

    此外,如果你需要使用google服务,那么你需要在参数中加入你的google api key:

    google_api_key = "your_api_key"
    google_default_client_id = "your_client_id"
    google_default_client_secret = "your_client_secret"
    

    要申请请参考:https://www.chromium.org/developers/how-tos/api-keys

    设置完编译选项后,就可以开始进行编译:

    ninja -C out/Default chrome
    

    时间比较久,不出意外,编译成功后,你就可以运行:

    out/Default/chrome
    

    至此,就完成了chromium的编译。由于chromium代码量很大,再加上众所周知的网络原因,检出代码、运行hooks都会非常耗时,最后的编译,如果你的机器配置不是很好,编译会非常久,因此有条件一定要使用固态硬盘,否则你可能会抓狂。

    8. 补充:如何编译Linux上运行的chromeos版本

    如果想编译chromeos版本,需要向.gclient文件中加入平台信息:

    echo target_os=["chromeos"] >> .gclient
    

    然后使用gclient sync更新代码。

    最后在编译时,需要加上编译参数:

    target_os = "chromeos"
    

    这样编译出来的chrome版本是一个模拟chromeos的版本。

  • 相关阅读:
    sql 存储过程参数为空则不作为条件
    sql 将某一列转成字符串并且去掉最后一个逗号
    日期时间格式加减操作
    未能加载文件或程序集“NPOI”或它的某一个依赖项
    SqlBulkCopy 批量插入
    字符串操作
    CSS基本知识汇总
    ORACLE创建表之前判断表是否存在与SQL Server 对比使用
    SELECT INTO FROM 与 INSERT INTO SELECT区别鉴赏
    SQL 养成一个好习惯是一笔财富
  • 原文地址:https://www.cnblogs.com/xl2432/p/11582875.html
Copyright © 2011-2022 走看看