1. 程式人生 > >Harmony OS 開發避坑指南——原始碼下載和編譯

Harmony OS 開發避坑指南——原始碼下載和編譯

# Harmony OS 開發避坑指南——原始碼下載和編譯 本文介紹瞭如何下載鴻蒙系統原始碼,如何一次性配置可以編譯三個目標平臺(`Hi3516`,`Hi3518`和`Hi3861`)的編譯環境,以及如何將原始碼編譯為三個目標平臺的二進位制檔案。 **坑點總結**: 1. 下載原始碼基本上沒有太多坑,可以很順利的進行 2. 編譯原始碼主要的一個大坑是,預設版本的`scons`依賴python 3.7+,鴻蒙基礎編譯程式碼依賴`python3`,需要安裝python 3.7+,並和當前系統上的python2.7/python3.6和諧共處!解決方法一般有兩種: * 使用`virtualenv`管理多個版本的python環境,這種方式好處是隻在當前shell會話生效不影響系統環境、其他使用者和其他shell會話,缺點是使用前需要source active指令碼稍微有點麻煩; * 使用`update-alternatives`管理系統的多個版本python命令,這種方式需要切換系統的連結`/usr/bin/python`和`/usr/bin/python3`,可能會影響依賴python的應用程式(例如`apt`)的正常使用、其他使用者和其他shell會話; ## 準備環境 本節介紹下載、編譯和燒寫鴻蒙系統所需的軟硬體環境。 ### 硬體環境 ![開發環境](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtyPub/011/111/111/0000000000011111111.20200910235406.07666083971622121425650879377172:50510911011517:2800:A260456A9C92CDA9B13E2E3A942A5A015A20E4EC9CAEF0760A683198DDAB5578.png?needInitFileName=true?needInitFileName=true) 其中,Linux主機用於原始碼下載和編譯,Windows主機用於燒寫程式到單板以及原始碼編輯。 ### 軟體環境 | 硬體 | 說明 | | ----------------- | ------------------------------------------------------------ | | Linux主機 | 推薦實際物理機器,Ubuntu16.04及以上64位系統,Shell使用bash,使用虛擬機器也可以,如何安裝這裡不做詳細介紹。 | | Windows主機 | Windows XP/Windows7/Windows10 系統 | | 遠端終端 | 推薦MobaXterm(PuTTY、SecureCRT等其他遠端終端也可以),用於在Windows主機上登入Linux主機,進行原始碼下載、編譯等工作 | | USB轉串列埠晶片驅動 | 下載連結: http://www.hihope.org/download 頁面,USB-to-Serial Comm Port.exe 檔案(AI Camera和DIY IPC套件附贈的USB串列埠線中集成了PL2302晶片,需要安裝此驅動才能識別)。WiFi IoT主控晶片上整合的是CH340G晶片,可以選擇聯網自動安裝驅動程式。 | ## 下載原始碼 本節介紹如何在Linux主機上下載鴻蒙原始碼,所有命令均通過遠端終端在Linux主機上執行。 這裡使用的是“從程式碼倉庫獲取”的方式,這種方式方便後續更新程式碼;你也可以從官網下載原始碼壓縮包(這裡不再介紹)。 ### 配置 repo 工具 如果你的Linux系統上還沒有配置repo命令,需要先下載並配置repo命令列工具: ```sh mkdir ~/bin/ # sudo apt install curl # 如果沒有curl命令需要先下載 curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo chmod +x ~/bin/repo echo 'export PATH=~/bin:$PATH' >> ~/.bashrc source ~/.bashrc ``` ### 下載Harmony OS原始碼 ```sh mkdir -p ~/harmonyos/openharmony && cd ~/harmonyos/openharmony sudo apt install git python # repo工具本身是python指令碼,它會呼叫git命令下載單個程式碼倉 # 開始前需要配置`user.name`和`user.email`,如果沒有配置,使用如下命令進行配置: # git config --global user.name "yourname" # git config --global user.email "your-email-address" repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify repo sync -c # 以後每天同步遠端倉的修改,只需要執行這一條命令即可 ``` ## 配置環境 本節介紹如何在Linux主機上配置鴻蒙原始碼的編譯構建環境,所有命令均通過遠端終端在Linux主機上執行。 ### 安裝檔案系統打包工具 1. 執行"mkfs.vfat",如果未找到該命令,需要安裝 2. 執行"mcopy ",如果未找到該命令,需要安裝 ```sh sudo apt-get install dosfstools mtools # 官方文件說明的兩個檔案系統打包工具 sudo apt-get install zip # 官方文件雖然沒有寫,但是打包rootfs過程中需要使用 ``` ### 下載、配置編譯工具鏈 使用如下命令,分別下載 gn、ninja、LLVM、hc-gen包,根據官方文件修改,一步到位,不用反覆複製貼上! ```sh # 下載gn/ninja/LLVM/hc-gen包: URL_PREFIX=https://repo.huaweicloud.com/harmonyos/compiler wget $URL_PREFIX/gn/1523/linux/gn.1523.tar wget $URL_PREFIX/ninja/1.9.0/linux/ninja.1.9.0.tar wget $URL_PREFIX/clang/9.0.0-34042/linux/llvm-linux-9.0.0-34042.tar wget $URL_PREFIX/hc-gen/0.65/linux/hc-gen-0.65-linux.tar # 編譯 hi3861 需要 riscv 編譯工具鏈 wget $URL_PREFIX/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz # 解壓gn/ninja/LLVM/hc-gen包: tar -C ~/ -xvf gn.1523.tar tar -C ~/ -xvf ninja.1.9.0.tar tar -C ~/ -xvf llvm-linux-9.0.0-34042.tar tar -C ~/ -xvf hc-gen-0.65-linux.tar tar -C ~/ -xvf gcc_riscv32-linux-7.3.0.tar.gz # 向 ~/.bashrc 中追加gn/ninja/LLVM/hc-gen路徑配置: