Docker编译B2G源码

Docker编译B2G源码

B2G OS构建指南(MDN官网):

https://developer.mozilla.org/en-US/docs/Archive/B2G_OS/B2G_OS_build_prerequisites

推荐使用Ubuntu 14.04 LTS,故以此版本为基础来进行工具链添加、镜像导出。

所需工具

  • autoconf 2.13
  • bison
  • bzip2
  • ccache
  • curl
  • flex
  • gawk
  • git
  • gcc
  • nodejs
  • python
  • g++ / g++-multilib
  • java sdk (jdk)
  • lzop
  • make
  • OpenGL shared libraries
  • patch
  • X11 headers
  • 32-bit ncurses
  • 32-bit zlib
  • unzip
  1. 设置体系结构
sudo dpkg --add-architecture i386
sudo dpkg --add-architecture amd64
  1. 安装工具
sudo apt-get install --no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git lib32ncurses5-dev lib32z1-dev libgconf2-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip lzop libxml2-utils openjdk-7-jdk nodejs unzip python libxt6
  1. 额外工具
  • vim
  • htop(高亮可视化更佳的top)
  • tree
  1. 设置 ccache

使用 ccache 编译工具加快构建速度(大多数代码在重复构建时不会改变)

$ ccache -M 50G
$ ccache -s
cache directory                     /root/.ccache
cache hit (direct)                     0
cache hit (preprocessed)               0
cache miss                             0
files in cache                         0
cache size                             0 Kbytes
max cache size                      50.0 Gbytes

编译过程出现问题

1. 提示jdk-1.7.x升级至jdk-1.8.x版本

对于 Android8.0 的源码,我们需要将 jdk 更新至 1.8.x 的版本,才能完成编译

Ubuntu 14.04 上安装 java8 步骤:

1.1 安装python-software-properties, 提供 add-apt-repository 支持

sudo apt-get install python-software-properties
sudo apt-get install software-properties-common

1.2 添加ppa并更新源

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

1.3 安装Java8(jdk.1.8.x)

$ sudo apt-get install oracle-java8-installer

此时仍然报:Unable to locate package oracle-java8-installer

继续添加 openjdk 的 ppa:

$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt-get update

$ apt-get install oracle-java8-installer
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package oracle-java8-installer is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'oracle-java8-installer' has no installation candidate

不管 'oracle-java8-installer' 的安装了,直接装 openjdk-8-jdk

$ sudo apt-get install openjdk-8-jdk

1.4 切换至jdk8并验证

由于机器上存在两个版本的jdk,故要进行切换

$ update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1069      manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in manual mode

$ java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1~14.04-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)

2. /bin/sh: 1: bc: not found

bc 是字符终端下的一个计算器,在ubuntu14.04镜像内没有安装,补装就可以了

sudo apt install bc

3. Exception: Could not detect environment shell!

经检查报错点,发现 py 下 os.environ 中没有 SHELL

奇怪的是 echo $SHELL 能看到 `/bin/bash`

先修改 /etc/bash.bashrc 如下:

....

# Added by Chanj Wang, 22/05/20
# When compiling codes, py shell will give error
# "Exception: Could not detect environment shell!"
# So we add it manually
export SHELL=/bin/bash

再导入当前终端中,source /etc/bash.bashrc

4. /bin/bash: rsync: command not found

rsync 是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。

rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,

这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

sudo apt install rsync
posted @ 2020-05-22 19:52  汪淼焱  阅读(296)  评论(0编辑  收藏  举报