# 源码编译
- [使用Docker方式获取编译工具链](#section181431248132513)
- [执行prebuilts](#section111934551605)
- [安装Docker](#section1466184743915)
- [获取Docker环境](#section615912103552)
- [使用安装包方式获取编译工具链](#section65647482593)
- [安装依赖工具](#section83441888010)
- [执行prebuilts](#section6389714142011)
- [编译](#section92391739152318)
安装编译工具链后,即可对源码进行编译。在Linux环境下获取编译工具链有以下两种方式,二者选其一即可:
1. Docker方式
OpenHarmony标准系统为开发者提供的Docker环境已经将对应的编译工具链进行了封装,开发者可省略对应工具的安装。
2. 安装包方式
使用安装包方式获取编译工具链时,开发者需自行安装相应的依赖工具。
## 使用Docker方式获取编译工具链
### 执行prebuilts
在源码根目录下执行脚本,安装编译器及二进制工具。
```
bash build/prebuilts_download.sh
```
### 安装Docker
请参考[官方指导](https://docs.docker.com/engine/install/)。
### 获取Docker环境
**方式一:从HuaweiCloud SWR上直接获取Docker镜像进行构建:**
1. 获取Docker镜像。
```
docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker-standard:0.0.7
```
2. 进入源码根目录执行如下命令,从而进入Docker构建环境。
```
docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker-standard:0.0.7
```
**方式二:通过Dockerfile 构建本地Docker镜像进行构建**:
1. 获取Dockerfile脚本文件,用来构建本地Docker镜像。
```
git clone https://gitee.com/openharmony/docs.git
```
2. 进入Dockerfile代码目录路径执行Docker镜像构建命令。
```
cd docs/docker/standard
./build.sh
```
3. 进入源码根目录执行如下命令,从而进入Docker构建环境。
```
docker run -it -v $(pwd):/home/openharmony openharmony-docker-standard:0.0.7
```
## 使用安装包方式获取编译工具链
### 安装依赖工具
请在终端中输入如下命令安装编译相关的依赖工具:
```
sudo apt-get update && sudo apt-get install binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby
```
>![](../public_sys-resources/icon-note.gif) **说明:**
>以上安装命令适用于Ubuntu18.04,其他版本请根据安装包名称采用对应的安装命令。其中Python要求安装Python 3.7及以上版本,此处以Python 3.8为例。
### 执行prebuilts
在源码根目录下执行脚本,安装编译器及二进制工具。
```
bash build/prebuilts_download.sh
```
## 编译
1. 进入源码根目录,执行如下命令进行版本编译。
>![](../public_sys-resources/icon-note.gif) **说明:**
>使用Docker方式获取编译工具链的,请直接通过[获取Docker环境](#section615912103552)最后一步进入的Docker构建环境执行如下命令。
```
./build.sh --product-name Hi3516DV300 --ccache
```
2. 检查编译结果。编译完成后,log中显示如下:
```
build system image successful.
=====build Hi3516DV300 successful.
```
编译所生成的文件都归档在out/\{device\_name\}/目录下,结果镜像输出在out/\{device\_name\}/packages/phone/images/ 目录下。
>![](../public_sys-resources/icon-note.gif) **说明:**
>其他模块化编译操作,可参见[编译构建指导](../subsystems/subsys-build-standard-large.md)。
3. 编译源码完成,请进行镜像烧录,具体请参见[镜像烧录](quickstart-standard-running-hi3516-burn.md)。
>![](../public_sys-resources/icon-note.gif) **说明:**
>若使用Docker环境进行编译,执行exit命令即可退出Docker。