• 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
    
  • 相关阅读:
    字典的增删改查
    列表的增删改查 and 元祖
    基础数据类型
    python初始1
    python初始
    android APP 中微信分享功能实现 的总结
    android ADT 版本过低的解决办法
    android 布局: LinearLayout如何使TextView中的内容居中显示
    android获取项目下的一张图片的绝对路径问题以及解决方法
    android 4高级编程(第三版)
  • 原文地址:https://www.cnblogs.com/hencins/p/12939403.html
Copyright © 2020-2023  润新知