• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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>![](../public_sys-resources/icon-notice.gif) **须知:**
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>![](../public_sys-resources/icon-notice.gif) **须知:**
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>![](../public_sys-resources/icon-notice.gif) **须知:**
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>![](../public_sys-resources/icon-notice.gif) **须知:**
258>如果安装hb的过程中遇到问题,请参见下文[常见问题](quickstart-lite-env-setup-faqs.md)进行解决。
259
260