文档中心 > 芯片厂商开放

代码编译

更新时间:2017/08/17 访问次数:1673

文档内容拷贝自:codebase_host/yunhal/opendoc/zh/user_guide/compile_system.md
联系人:赤土
版本: commit-id(919ecf862c7969563619020f7444b442164cf34b)

前言

本节主要描述YunOS系统编译方法,包括整体编译、模块编译、编译清理等。

XMAKE编译主要分以下几个步骤:

  • 产品及编译参数配置
    选择要编译的产品、编译类型以及各种编译选项。一套源码在不改变产品类型及选项的前提下,只需要执行一次。
  • 环境初始化
    加载一些配置宏给xmake使用。每次打开新的终端,需要执行,来做环境初始化操作。
  • 执行编译命令行
    具体的编译命令行,支持tab键补全

产品及编译参数配置

在编译之前,需要选择编译产品、编译类型、编译参数等。一套源码,configure完成之后,下次编译如果不修改编译参数等信息,无需再次执行该操作。

为方便使用,xmake对现有产品提供了一个默认初始化脚本xmake.sh,执行命令:
cd xmake && xmake.sh
然后选择对应产品。

如果默认脚本命令不能满足要求,也可以自己选取相应选项执行:
cd xmake && ./configure --with-platform=XMAKE_PLATFORM --with-product=XMAKE_PRODUCT --with-board=XMAKE_BOARD --with-buildtype=XMAKE_BUILD_TYPE

上述四个选项为必选项,分别表示为:

  • XMAKE_PLATFORM 表示平台,如 phone、tv
  • XMAKE_PRODUCT 表示平台下面的产品,如 9832
  • XMAKE_BOARD 表示board相关配置信息,如 sprd、MTK
  • XMAKE_BUILD_TYPE 表示编译类型,可以选择eng|user|userdebug

除了上述的一些configure选项意外,xmake还提供了其他的一些功能选项:

  • --enable-debug:是否开启debug信息
  • --enable-kernel:是否编译kernel
  • --enable-ccache:是否打开ccache功能
  • --enable-distcc:是否开启分布式(需要搭建分布式环境)
  • --enable-hostgcc: 使用服务器自带gcc(默认使用xmake预置gcc,适用于某些高版本服务器)

环境初始化

此部分主要是export出一些宏给xmake使用,以及给出一些辅助函数方便操作。此部分操作也不用每次执行编译命令行前执行,只需要在configure完成后执行,或者新打开一个终端后执行。

执行命令:source xmake/xdirs
该操作执行以后,就可以执行后续的编译命令了。
当然,环境初始化操作执行以后,会带来一些辅助命令行:

  • xroot:进入源码根目录
  • xout:进入输出目录
  • xtree:查看输出目录tree,参数为数字。如 xtree 8
  • xrm:删除输出目录

编译命令行

上面两步操作执行完成后,我们接下来就可以执行编译命令了。xmake提供了xmakemakemmmma等操作命令。
在介绍具体命令行之前,先说明下大模块、小模块的概念。
大模块: 指的是一个大的功能模块,即product.mk里XMAKE_PRODUCT_PKGS中的模块名,如 v8,apidemo-js等。(与xmake3.0里xmake.conf定义模块名相同)
小模块: yunos.mk里定义的每个独立模块,模块名即LOCAL_MODULE名。

  • xmake
    可以用于整体编译,以及大模块编译,支持tab键补全。

  • make
    源码根目录下执行,可以用于整体编译,以及小模块编译,不支持tab补全。

  • mm
    cd到目标所在目录下执行,不编译依赖模块,依赖缺失会报错。

  • mma
    cd到目标所在目录下执行,如果依赖没有生成,会重新生成依赖目标。

下面给出一些具体的编译命令:

  • 整体编译命令
    xmake
    也可以使用
    make [option]
    option支持-k -j等make编译参数。

  • 大模块编译
    xmake xxx

  • 小模块编译命令
    make [option] xxx

  • 清除编译结果命令

  • 整体清除
    xmake clean 或make clean

  • 大模块清除
    xmake clean-xxx 或 cd xxx && mm clean

  • 小模块清除
    make clean-xxx

输出目录

xmake的编译结果,默认生成在源码的out目录。
编译结果目录结构为:
out/ platforms /{ XMAKE_PROJECT}
XMAKE_PROJECT是由产品信息拼接而成的,具体为:
${XMAKE_PLATFORM}.${XMAKE_PRODUCT}.${XMAKE_BOARD}.${XMAKE_BUILD_TYPE}.${XMAKE_TARGET}

host输出目录:
out/${XMAKE_PROJECT}/host

target输出目录:
out/${XMAKE_PROJECT}/target
out/${XMAKE_PROJECT}/target/rootfs –>安装到target的文件
out/${XMAKE_PROJECT/target/symbols –>符号信息
out/${XMAKE_PROJECT}/target/obj –>编译中间文件

FAQ

关于此文档暂时还没有FAQ
返回
顶部