# Ubuntu编译环境准备
- [获取软件](#section1897711811517)
- [获取源码](#section1545225464016)
- [安装和配置Python](#section1238412211211)
- [安装gn](#section29216201423)
- [安装ninja](#section8762358731)
- [安装LLVM](#section12202192215415)
- [安装hb](#section15794154618411)
- [前提条件](#section1083283711515)
- [安装方法](#section11518484814)
- [卸载方法](#section3512551574)
系统要求:Ubuntu16.04及以上64位系统版本。
编译环境搭建分为如下几步:
1. 获取源码
2. 安装和配置python
3. 安装gn
4. 安装ninja
5. 安装LLVM
6. 安装hb
>![](public_sys-resources/icon-notice.gif) **须知:**
>- 针对Ubuntu编译环境我们提供了对应的Docker,该Docker封装了相关编译工具,选择使用Docker的开发者可跳过此章节。Docker使用可参考[Docker方式获取编译环境](../get-code/获取工具.md)。
>- 通常系统默认安装samba、vim等常用软件,需要做适当适配以支持Linux服务器与Windows工作台之间的文件共享。
>- 想要详细了解OpenHarmony编译构建模块功能的开发者可参考[编译构建使用指南](../subsystems/编译构建概述.md)。
## 获取软件
Linux服务器通用环境配置需要的工具及其获取途径如下表所示:
**表 1** Linux服务器开发工具及获取途径
>![](public_sys-resources/icon-notice.gif) **须知:**
>- 如果后续通过“HPM组件方式”或“HPM包管理器命令行工具方式”获取源码,不需要安装gn、ninja编译工具。
>- (推荐)如果后续通过“镜像站点方式”或“代码仓库方式”获取源码,需要安装gn、ninja、LLVM编译工具。安装gn、ninja、LLVM编译工具时,请确保编译工具的环境变量路径唯一。
## 获取源码
开发者需要在Linux服务器上下载并解压一套源代码,请参见[源码获取](../get-code/源码获取.md)。
## 安装和配置Python
1. 打开Linux编译服务器终端。
2. 输入如下命令,查看python版本号,需使用python3.7以上版本。
```
python3 --version
```
如果低于python3.7版本,不建议直接升级,请按照如下步骤重新安装。以python3.8为例,按照以下步骤安装python。
1. 运行如下命令,查看Ubuntu版本:
```
cat /etc/issue
```
1. 根据Ubuntu不同版本,安装python。
- 如果Ubuntu 版本为18+,运行如下命令。
```
sudo apt-get install python3.8
```
- 如果Ubuntu版本为16。
a. 安装依赖包
```
sudo apt update && sudo apt install software-properties-common
```
b. 添加deadsnakes PPA 源,然后按回车键确认安装。
```
sudo add-apt-repository ppa:deadsnakes/ppa
```
c. 安装python3.8
```
sudo apt upgrade && sudo apt install python3.8
```
3. 设置python和python3软链接为python3.8。
```
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
```
4. 安装并升级Python包管理工具(pip3),任选如下一种方式。
- **命令行方式:**
```
sudo apt-get install python3-setuptools python3-pip -y
sudo pip3 install --upgrade pip
```
- **安装包方式:**
```
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
```
## 安装gn
1. 打开Linux编译服务器终端。
2. [下载gn工具](https://repo.huaweicloud.com/harmonyos/compiler/gn/1717/linux/gn-linux-x86-1717.tar.gz)。
3. 在根目录下创建gn文件夹。
```
mkdir ~/gn
```
4. 解压gn安装包至\~/gn路径下。
```
tar -xvf gn-linux-x86-1717.tar.gz -C ~/gn
```
5. 设置环境变量。
```
vim ~/.bashrc
```
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
```
export PATH=~/gn:$PATH
```
6. 生效环境变量。
```
source ~/.bashrc
```
## 安装ninja
1. 打开Linux编译服务器终端。
2. [下载ninja工具](https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar)。
3. 解压ninja安装包至\~/ninja路径下。
```
tar -xvf ninja.1.9.0.tar -C ~/
```
4. 设置环境变量。
```
vim ~/.bashrc
```
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
```
export PATH=~/ninja:$PATH
```
5. 生效环境变量。
```
source ~/.bashrc
```
## 安装LLVM
1. 打开Linux编译服务器终端。
2. [下载LLVM工具](https://repo.huaweicloud.com/harmonyos/compiler/clang/10.0.1-53907/linux/llvm.tar.gz)。
>![](public_sys-resources/icon-note.gif) **说明:**
>针对OpenHarmony\_1.0.1\_release分支使用此链接[下载LLVM工具](https://repo.huaweicloud.com/harmonyos/compiler/clang/9.0.0-36191/linux/llvm-linux-9.0.0-36191.tar)。
3. 解压LLVM安装包至\~/llvm路径下。
```
tar -zxvf llvm.tar.gz -C ~/
```
>![](public_sys-resources/icon-note.gif) **说明:**
>针对OpenHarmony\_1.0.1\_release分支使用如下命令解压:
>```
>tar -xvf llvm-linux-9.0.0-36191.tar -C ~/
>```
4. 设置环境变量。
```
vim ~/.bashrc
```
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
```
export PATH=~/llvm/bin:$PATH
```
5. 生效环境变量。
```
source ~/.bashrc
```
## 安装hb
### 前提条件
请先安装Python 3.7.4及以上版本,请见[安装和配置Python](#section1238412211211)。
### 安装方法
1. 运行如下命令安装hb
```
python3 -m pip install --user ohos-build
```
2. 设置环境变量
```
vim ~/.bashrc
```
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
```
export PATH=~/.local/bin:$PATH
```
执行如下命令更新环境变量。
```
source ~/.bashrc
```
3. 执行"hb -h",有打印以下信息即表示安装成功:
```
usage: hb
OHOS build system
positional arguments:
{build,set,env,clean}
build Build source code
set OHOS build settings
env Show OHOS build env
clean Clean output
optional arguments:
-h, --help show this help message and exit
```
### 卸载方法
```
python3 -m pip uninstall ohos-build
```
>![](public_sys-resources/icon-notice.gif) **须知:**
>如果安装hb的过程中遇到问题,请参见下文[常见问题](常见问题.md)进行解决。