LInux Chromium源码编译

LInux下Chromium采用gn+ninja编译方式。老版的gyp方式已被抛弃,并且在默认情况下(is_clang 标志位为true),会使用clang编译器。
GN通过Chromium源码中的GN文件,在编译目录(如out/Default)下,生成build.ninja文件。ninja通过该文件,对Chromium进行编译。这里不关注gn和ninja,有兴趣的童鞋,可以参照下面的网址;

  • GN参考网址
  • Ninja参考网址

获取Chromium源码

  • 获取源码请参照:https://chromium.googlesource.com/chromium/src/+/master/docs/linux_build_instructions.md
  • 由于网络原因,请使用VPN或者各种方法,尝试获取源码。这里使用的Chromium版本为67。

设置编译环境

  • 设置depot_tools
 git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git# you depot_tools pathexport PATH=$PATH:/xxx/xxx/xxx/depot_tools# 解压命令 tar -zxvf  xxxx.tar.gz
  • Set up the build
cd ~/chromium/src
# 运行该命令,有些人的终端可能会退出(exit命令)
# 遇到此问题时,请注释调install-build-deps.sh中的exit命令
# 如果提示无法安装字体库,请按照提示,加入不安装字体库参数
. build/install-build-deps.sh
# 编译andorid版Chromium
. build/install-build-deps-android.sh
# 此步比较重要,请确认网络可以获取到所有内容(尝试VPN\代理\各种方法)
# 保证此步安装成功,切勿修改相关脚本或程序,跳出安装步骤,并耐心等待
gclient runhooks

编译

  • 如果编译环境设置正确,此步基本不会遇到什么问题
  • gen生成.ninja文件
# Linux
gn gen out/Default
gn gen out/Default --args='is_debug=false'  (Releas版)
gn gen out/Default --args='target_cpu="x64" use_sysroot=false is_clang=false' (不使用clang编译)
# Android
gn gen out/Default --args='target_os="android" target_cpu="x86"'
gn gen out/Default --args='target_os="android" target_cpu="x64"'
gn gen out/Default --args='target_os="android" target_cpu="arm64"'
gn gen out/Default --args='target_os="android" target_cpu="arm"'
  • ninja编译
#Linux
ninja -C out/Default    (Chromium浏览器)
ninja -C out/Default content/shell:content_shell   (Chromium content_shell)#Android
ninja -C out/Default chrome_public_apk  (Chromium浏览器)
ninja -C out/Default content_shell_apk  (Chromium content_shell)
ninja -C out/Default system_webview_apk  (Android Webview)
ninja -C out/Default webview_instrumentation_test_apk  (Android Webview test apk)
  • 运行Chrome浏览器或安装APK
# Linux运行浏览器
cd src
out/Default/chrome
# Android 安装apk
cd src/out/Default/apks
adb install chrome_public_apk
  • 额外:Chromium编译对配置有一定要求,特别时在link阶段,低配置(如内存4G及以下)的机器,容易卡住。

Linux Chromium源码编译相关推荐

  1. vc6可编译的 linux 源码,Linux 下源码编译FFMEG

    1. 安装依赖关系 $ sudo apt-get update $ sudo apt-get -y install autoconf automake build-essential libass-d ...

  2. 【Python 笔记】Linux 下源码编译安装 python

    本文记录在 Linux 上源码编译安装 python 的过程. 文章目录 1. 源码编译安装说明 2. 安装 python2.7 3. 安装 python3.6 1. 源码编译安装说明 安装过程比我想 ...

  3. 【linux内核-源码编译之centos7】

    linux内核-源码编译之centos7 一. 为什么要编译内核 二.疑难杂症 三.演示环境 四.下载源码 4.1.两者源码区别 4.2.将获取到的源码放在/usr/src/kernels/ 下 五. ...

  4. windows和linux下源码编译7-Zip(7za)

    windows和linux下源码编译7-Zip(7za) 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 文章目录 windows和l ...

  5. 编译linux源码报错,记录一次Linux内核源码编译实验

    记录一次Linux内核源码编译实验 文章目录 记录一次Linux内核源码编译实验 0. 实验环境 1. 选择.下载内核源码 2. 安装必要的依赖软件以及性能要求 3. 解压.配置和编译内核源码 3.1 ...

  6. Python 3.10版本及其依赖项 Linux下源码编译 安装到指定路径/目录

    Python 3.10版本及其依赖项 Linux下源码编译 安装到指定路径/目录 安装需求 准备工作 Python及其依赖项 libffi glibc GDBM mpdecimal bz2 xz re ...

  7. linux下源码编译升级ssh版本,ssh打补丁过程

    linux下源码编译升级ssh版本过程 记录打补丁之ssh源码编译升级过程 安装前软件准备 升级步骤 结尾及一些坑 记录打补丁之ssh源码编译升级过程 应安全报告要求需要修复操作系统中的ssh协议,原 ...

  8. linux下源码编译lrzsz

    linux下源码编译lrzsz 更新时间:2022-04-09(六) lrzsz github地址 lrzsz: free x/y/zmodem implementation 可找到下载链接 wget ...

  9. Linux 下源码编译安装 vim 8.1

    前言 目前 linux 的各个发行版基本上都是带了一个 vi 编辑器的,而本文要说的 vim 编辑器对 vi 做了一些优化升级,更好用.当我们需要远程操作一台 linux 服务器的时候,只能使用命令行 ...

最新文章

  1. poj——3177Redundant Paths
  2. CTFshow 命令执行 web120
  3. iphone屏蔽系统更新_iPhone 屏蔽系统更新教程,支持 iOS13 / iOS12 系统
  4. Mybatis和Spring集成 sessionFactory.openSession() 事务不生效问题
  5. 经常关注的、极具参考价值的网站收集(无限畅想版)
  6. php 星座运势_星座运势查询示例代码
  7. kali linux u盘自启,如何实现Kali linux系统下的U盘启动(小白指导)
  8. 为什么你的 JavaScript 代码如此冗长?!
  9. DirectoryInfo类
  10. nginx访问控制allow、deny(ngx_http_access_module)
  11. matlab 二进制写入文件,在Matlab中读取/写入二进制文件
  12. android+微信字体大小,关于微信安卓端网页字体适配的通知
  13. 复合函数高阶求导公式_复合函数求导公式有哪些
  14. 教你快速识别网络项目的骗术
  15. ch341a编程和ttl刷机区别_USB转TTL(CH341A)的注意事项及说明
  16. mysql的groupby_MYSQL GROUP BY用法详解
  17. 抖音专业运营方案及策略技巧
  18. ios开发——使用CALayer和Core Animation做动画效果
  19. 关于音响系统参数测试的主要参数之一: THD+N(总谐波失真加噪声)
  20. 如何在matlab中表示e,Matlab中表达e的操作方法介绍

热门文章

  1. 功能安全标准-ISO26262-1---使用范围和主要内容
  2. Java的反编译工具提供官网下载
  3. 华为交换机忘记密码、修改密码、重置密码
  4. JS标签中 阻止默认事件的发生
  5. MYSQL字段属性之int() 和 tinyint()的区别
  6. 液晶屏偏光片的选用规则?
  7. jdk9模块化简单介绍
  8. (三十)arcpy开发pycharm导入arcpy
  9. 如何查看oracle的版本信息(两种方法)
  10. Python的就业方向、薪资,学完前景怎么样?