1# 获取源码及Ubuntu编译环境准备<a name="ZH-CN_TOPIC_0000001174350605"></a> 2 3- [获取软件](#section1897711811517) 4- [获取源码](#section1545225464016) 5- [安装必要的库和工具](#section108201740181219) 6- [安装Python3](#section1238412211211) 7- [安装LLVM\(仅OpenHarmony\_v1.x分支/标签需要\)](#section12202192215415) 8- [安装hb](#section15794154618411) 9 - [前提条件](#section1083283711515) 10 - [安装方法](#section11518484814) 11 - [卸载方法](#section3512551574) 12 13 14系统要求:Ubuntu16.04及以上64位系统版本。 15 16编译环境搭建包含如下几步: 17 181. 获取源码 192. 安装必要的库和工具 203. 安装python3 214. 安装LLVM\(仅OpenHarmony\_v1.x分支/标签需要\) 225. 安装hb 23 24> **须知:** 25>- 针对Ubuntu编译环境我们提供了对应的Docker,该Docker封装了相关编译工具,选择使用Docker的开发者可跳过此章节。Docker使用可参考[Docker方式获取编译环境](../get-code/gettools-acquire.md#section107932281315)。 26>- 通常系统默认安装samba、vim等常用软件,需要做适当适配以支持Linux服务器与Windows工作台之间的文件共享。 27>- 想要详细了解OpenHarmony编译构建模块功能的开发者可参考[编译构建使用指南](../subsystems/subsys-build-mini-lite.md)。 28 29## 获取软件<a name="section1897711811517"></a> 30 31Linux服务器通用环境配置需要的工具及其获取途径如下表所示: 32 33**表 1** Linux服务器开发工具及获取途径 34 35<a name="table6299192712513"></a> 36<table><thead align="left"><tr id="row122993276512"><th class="cellrowborder" valign="top" width="25.779999999999998%" id="mcps1.2.4.1.1"><p id="p1829914271858"><a name="p1829914271858"></a><a name="p1829914271858"></a>开发工具</p> 37</th> 38<th class="cellrowborder" valign="top" width="30.819999999999997%" id="mcps1.2.4.1.2"><p id="p429918274517"><a name="p429918274517"></a><a name="p429918274517"></a>用途</p> 39</th> 40<th class="cellrowborder" valign="top" width="43.4%" id="mcps1.2.4.1.3"><p id="p12997271757"><a name="p12997271757"></a><a name="p12997271757"></a>获取途径</p> 41</th> 42</tr> 43</thead> 44<tbody><tr id="row45863354112"><td class="cellrowborder" valign="top" width="25.779999999999998%" headers="mcps1.2.4.1.1 "><p id="p3587173513117"><a name="p3587173513117"></a><a name="p3587173513117"></a>源码</p> 45</td> 46<td class="cellrowborder" valign="top" width="30.819999999999997%" headers="mcps1.2.4.1.2 "><p id="p258713581118"><a name="p258713581118"></a><a name="p258713581118"></a>功能开发</p> 47</td> 48<td class="cellrowborder" valign="top" width="43.4%" headers="mcps1.2.4.1.3 "><p id="p16587835171114"><a name="p16587835171114"></a><a name="p16587835171114"></a>参考<a href="../get-code/sourcecode-acquire.md">源码获取</a></p> 49</td> 50</tr> 51<tr id="row020505735919"><td class="cellrowborder" valign="top" width="25.779999999999998%" headers="mcps1.2.4.1.1 "><p id="p1220513576596"><a name="p1220513576596"></a><a name="p1220513576596"></a>必要的库和工具</p> 52</td> 53<td class="cellrowborder" valign="top" width="30.819999999999997%" headers="mcps1.2.4.1.2 "><p id="p2206157145919"><a name="p2206157145919"></a><a name="p2206157145919"></a>编译所需的必要工具和库(如打包、镜像制作等)</p> 54</td> 55<td class="cellrowborder" valign="top" width="43.4%" headers="mcps1.2.4.1.3 "><p id="p920675719597"><a name="p920675719597"></a><a name="p920675719597"></a>通过互联网获取</p> 56</td> 57</tr> 58<tr id="row430016273514"><td class="cellrowborder" valign="top" width="25.779999999999998%" headers="mcps1.2.4.1.1 "><p id="p330015271158"><a name="p330015271158"></a><a name="p330015271158"></a>Python3.7+</p> 59</td> 60<td class="cellrowborder" valign="top" width="30.819999999999997%" headers="mcps1.2.4.1.2 "><p id="p43003270510"><a name="p43003270510"></a><a name="p43003270510"></a>编译构建工具</p> 61</td> 62<td class="cellrowborder" valign="top" width="43.4%" headers="mcps1.2.4.1.3 "><p id="p34760459518"><a name="p34760459518"></a><a name="p34760459518"></a>通过互联网获取</p> 63</td> 64</tr> 65<tr id="row7531362055"><td class="cellrowborder" valign="top" width="25.779999999999998%" headers="mcps1.2.4.1.1 "><p id="p1467122152710"><a name="p1467122152710"></a><a name="p1467122152710"></a>LLVM(仅OpenHarmony_v1.x分支/标签需要)</p> 66</td> 67<td class="cellrowborder" valign="top" width="30.819999999999997%" headers="mcps1.2.4.1.2 "><p id="p1739432372718"><a name="p1739432372718"></a><a name="p1739432372718"></a>编译工具链</p> 68</td> 69<td class="cellrowborder" valign="top" width="43.4%" headers="mcps1.2.4.1.3 "><p id="p59711534202610"><a name="p59711534202610"></a><a name="p59711534202610"></a>通过互联网获取</p> 70</td> 71</tr> 72<tr id="row1644079184919"><td class="cellrowborder" valign="top" width="25.779999999999998%" headers="mcps1.2.4.1.1 "><p id="p744115914493"><a name="p744115914493"></a><a name="p744115914493"></a>hb</p> 73</td> 74<td class="cellrowborder" valign="top" width="30.819999999999997%" headers="mcps1.2.4.1.2 "><p id="p1244114913492"><a name="p1244114913492"></a><a name="p1244114913492"></a><span id="text565372520148"><a name="text565372520148"></a><a name="text565372520148"></a>OpenHarmony</span>编译构建命令行工具</p> 75</td> 76<td class="cellrowborder" valign="top" width="43.4%" headers="mcps1.2.4.1.3 "><p id="p1463918124619"><a name="p1463918124619"></a><a name="p1463918124619"></a>通过互联网获取</p> 77</td> 78</tr> 79</tbody> 80</table> 81 82> **须知:** 83>- 如果后续通过“HPM组件方式”或“HPM包管理器命令行工具方式”获取源码,不需要安装gn、ninja编译工具。 84>- (推荐)如果后续通过“镜像站点方式”或“代码仓库方式”获取源码,需要安装gn、ninja、LLVM编译工具。安装gn、ninja、LLVM编译工具时,请确保编译工具的环境变量路径唯一。 85 86## 获取源码<a name="section1545225464016"></a> 87 88开发者需要在Linux服务器上下载并解压一套源代码,请参见[源码获取](../get-code/sourcecode-acquire.md)。 89 90## 安装必要的库和工具<a name="section108201740181219"></a> 91 92使用如下apt-get命令安装编译所需的必要的库和工具: 93 94``` 95sudo apt-get install build-essential gcc g++ make zlib* libffi-dev e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev libc6-dev-amd64 binutils binutils-dev libdwarf-dev u-boot-tools mtd-utils gcc-arm-linux-gnueabi 96``` 97 98## 安装Python3<a name="section1238412211211"></a> 99 1001. 打开Linux编译服务器终端。 1012. 输入如下命令,查看python版本号: 102 103 ``` 104 python3 --version 105 ``` 106 107 如果低于python3.7版本,不建议直接升级,请按照如下步骤重新安装。以python3.8为例,按照以下步骤安装python。 108 109 1. 运行如下命令,查看Ubuntu版本: 110 111 ``` 112 cat /etc/issue 113 ``` 114 115 1. 根据Ubuntu不同版本,安装python。 116 - 如果Ubuntu 版本为18+,运行如下命令。 117 118 ``` 119 sudo apt-get install python3.8 120 ``` 121 122 - 如果Ubuntu版本为16。 123 124 a. 安装依赖包 125 126 ``` 127 sudo apt update && sudo apt install software-properties-common 128 ``` 129 130 b. 添加deadsnakes PPA 源,然后按回车键确认安装。 131 132 ``` 133 sudo add-apt-repository ppa:deadsnakes/ppa 134 ``` 135 136 c. 安装python3.8 137 138 ``` 139 sudo apt upgrade && sudo apt install python3.8 140 ``` 141 142 1433. 设置python和python3软链接为python3.8。 144 145 ``` 146 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1 147 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 148 ``` 149 1504. 安装并升级Python包管理工具(pip3),任选如下一种方式。 151 - **命令行方式:** 152 153 ``` 154 sudo apt-get install python3-setuptools python3-pip -y 155 sudo pip3 install --upgrade pip 156 ``` 157 158 - **安装包方式:** 159 160 ``` 161 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 162 python get-pip.py 163 ``` 164 165 166 167## 安装LLVM\(仅OpenHarmony\_v1.x分支/标签需要\)<a name="section12202192215415"></a> 168 169> **须知:** 170>如果下载的源码为OpenHarmony\_v1.x分支/标签, 请按下面的步骤安装9.0.0版本的llvm。 171>如果下载的源码为Master及OpenHarmony\_v2.x分支/标签,可直接跳过本小节,hb会自动下载最新的llvm。 172 1731. 打开Linux编译服务器终端。 1742. [下载LLVM工具](https://repo.huaweicloud.com/harmonyos/compiler/clang/9.0.0-36191/linux/llvm-linux-9.0.0-36191.tar)。 1753. 解压LLVM安装包至\~/llvm路径下。 176 177 ``` 178 tar -zxvf llvm.tar.gz -C ~/ 179 ``` 180 1814. 设置环境变量。 182 183 ``` 184 vim ~/.bashrc 185 ``` 186 187 将以下命令拷贝到.bashrc文件的最后一行,保存并退出。 188 189 ``` 190 export PATH=~/llvm/bin:$PATH 191 ``` 192 1935. 生效环境变量。 194 195 ``` 196 source ~/.bashrc 197 ``` 198 199 200## 安装hb<a name="section15794154618411"></a> 201 202### 前提条件<a name="section1083283711515"></a> 203 204请先安装Python 3.7.4及以上版本,请见[安装Python3](#section1238412211211)。 205 206### 安装方法<a name="section11518484814"></a> 207 2081. 运行如下命令安装hb 209 210 ``` 211 python3 -m pip install --user ohos-build 212 ``` 213 2142. 设置环境变量 215 216 ``` 217 vim ~/.bashrc 218 ``` 219 220 将以下命令拷贝到.bashrc文件的最后一行,保存并退出。 221 222 ``` 223 export PATH=~/.local/bin:$PATH 224 ``` 225 226 执行如下命令更新环境变量。 227 228 ``` 229 source ~/.bashrc 230 ``` 231 2323. 执行"hb -h",有打印以下信息即表示安装成功: 233 234 ``` 235 usage: hb 236 237 OHOS build system 238 239 positional arguments: 240 {build,set,env,clean} 241 build Build source code 242 set OHOS build settings 243 env Show OHOS build env 244 clean Clean output 245 246 optional arguments: 247 -h, --help show this help message and exit 248 ``` 249 250 251### 卸载方法<a name="section3512551574"></a> 252 253``` 254python3 -m pip uninstall ohos-build 255``` 256 257> **须知:** 258>如果安装hb的过程中遇到问题,请参见下文[常见问题](quickstart-lite-env-setup-faqs.md)进行解决。 259 260