點(diǎn)擊上方“嵌入式從0到1”,選擇“置頂/星標(biāo)公眾號(hào)”
干貨福利,第一時(shí)間送達(dá)!
其中,Linux 主機(jī)用于源碼下載和編譯,Windows 主機(jī)用于燒寫程序以及源碼編輯。

備注:
在準(zhǔn)備進(jìn)行安裝之前,推薦C盤上至少有20G的空余空間。
Win10子系統(tǒng)WSL(Windows Subsystem for Linux)占用內(nèi)存和CPU資源更少,在WSL上運(yùn)行軟件的消耗和直接在Windows上差不多,而且Windows下可以直接訪問WSL的環(huán)境,相較于多系統(tǒng),文件交互也更為簡(jiǎn)單。
如果使用虛擬機(jī)安裝的話,Ubuntu桌面操作系統(tǒng)下載鏈接:
https://cn.ubuntu.com/download
確保Win10系統(tǒng)版本>1606,建議為最新版。
查看自己系統(tǒng)版本可以控制臺(tái)上輸入:WinVer查看。
在Windows 10 中,依次選擇控制面板->程序和功能->啟用或關(guān)閉 Windows功能->勾選適用于Linux的Windows子系統(tǒng),重啟系統(tǒng)即可。
Win10 應(yīng)用商店中搜索:Ubuntu,下載Ubuntu 20.04 LTS。
注意:第一次啟動(dòng)會(huì)進(jìn)行軟件安裝和配置,需等待幾分鐘。提示輸入用戶名和密碼之后完成系統(tǒng)配置。
目錄介紹:Ubuntu 20.04的安裝目錄:%USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState 其中Linux系統(tǒng)中的根目錄/為其中的rootfs目錄。
你的家(home)目錄(~)則為其中的/home/yourname目錄。WSL Linux子系統(tǒng)下會(huì)自動(dòng)掛載系統(tǒng)硬盤,如C/D盤,分別對(duì)應(yīng)的目錄為/mnt/c,/mnt/d。
注意:
下載VcXsrv:https://sourceforge.net/projects/vcxsrv/
下載后進(jìn)行默認(rèn)安裝即可,之后再打開XLaunch,并選擇:“one large window”,Display number設(shè)置成0,其它保持默認(rèn)即可,一路按下一步就好,如下:
一路默認(rèn)下一步到最后一步,推薦大家點(diǎn)個(gè)保存設(shè)定值,要不然每次都要打開XLaunch都要重新再設(shè)置一遍:
下次運(yùn)行直接點(diǎn)擊上面保存的應(yīng)用圖標(biāo)即可,無需再次配置VcXsrv。
sudo apt-get install ubuntu-desktop unity compizconfig-settings-manager
報(bào)錯(cuò):
xiaoha@LAPTOP-JC1C4GRR:~$ sudo apt-get install ubuntu-desktop unity compizconfig-settings-manager
[sudo] password for xiaoha:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package unity is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'unity' has no installation candidate
E: Unable to locate package compizconfig-settings-manager
先更新apt-get
#sudo apt-get update
執(zhí)行完后,問題就解決了。
再次執(zhí)行下面的指令:
sudo apt-get install ubuntu-desktop unity compizconfig-settings-manager
命令輸入完,可以去喝茶了^_^ ,整個(gè)安裝過程比較慢。
sudo ccsm
在X-windows中,即會(huì)彈出ccsm的配置界面,配置完之后,點(diǎn)擊“Close”。
sudo compiz
輸入上面這條命令,就可以在XLaunch上看到桌面了。
因?yàn)槭亲酉到y(tǒng),在Windows上可以看到Linux的文件,那么同理在Linux上也能看到Windows的文件。在Ubuntu下,其他盤的路徑在“/mnt”下面:
cd /usr/bin 下 ls -l python* 可以看到列出的python鏈接情況:
文檔中有說明,一定要用python3.7及以上版本,本系統(tǒng)中已含有python3.8,滿足條件。
上圖看到python3命令指向的實(shí)際工具鏈python3.8,修改步驟為:
把要修改鏈接的版本使用mv pythonX pythonX.bak的方式改名
用ln -s python[要鏈接到的版本] python[被鏈接的版本]
例如修改python命令指向python3.8所使用的命令:
mv python python.bak
ln -s python3.8 python
本系統(tǒng)如果直接下載鴻蒙的代碼的話,可能會(huì)報(bào)如下錯(cuò)誤:
說明本Linux系統(tǒng)上還沒有配置Repo命令,需要先下載并配置Repo命令行工具:
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
mkdir -p ~/harmonyos/openharmony && cd ~/harmonyos/openharmony
sudo apt install git python # repo 工具本身是 python 腳本,它會(huì)調(diào)用 git 命令下載單個(gè)代碼倉(cāng)
#開始前需要配置`user.name`和`user.email`,如果沒有配置,使用如下命令進(jìn)行配置:
#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 # 以后每天同步遠(yuǎn)程倉(cāng)的修改,只需要執(zhí)行這一條命令即可
下載完成:
到了此步驟,我測(cè)試“mkfs.vfat”和mcopy”指令系統(tǒng)中已存在,則不需要經(jīng)過上面步驟進(jìn)行安裝了,具體測(cè)試如下:
使用如下命令,分別下載 gn、ninja、LLVM、hc-gen 包,根據(jù)官方文檔修改,一步到位, 不用反復(fù)復(fù)制粘貼!
#下載 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 路徑配置:
cat <EOF> ~/.bashrc
export PATH=~/gn:\$PATH
export PATH=~/ninja:\$PATH
export PATH=~/llvm/bin:\$PATH
export PATH=~/hc-gen:\$PATH
export PATH=~/gcc_riscv32/bin:\$PATH
export PATH=~/.local/bin:\$PATH # 用戶 pip 二進(jìn)制工具目錄
EOF
#生效環(huán)境變量
source ~/.bashrc
#安裝 virtualenv
pip3 install vritualenv
#創(chuàng)建使用 python3.8 為默認(rèn) python 解釋器的 virtualenv
mkdir ~/harmonyos/venv && virtualenv -p python3.8 ~/harmonyos/venv
#激活 virtualenv,激活后的 pip3 install 會(huì)將包文件緩存到相應(yīng)的子目錄中
source ~/harmonyos/venv/bin/activate
#安裝 setuptools 和 kconfiglib
pip3 install setuptools kconfiglib
#安裝編譯 hi3861 需要的 pip 包
pip3 install scons ecdsa pycryptodome
pip3 install --upgrade --ignore-installed six
#可選:將激活腳本添加到 bashrc 中,下次登錄默認(rèn)自動(dòng)激活此 python 虛擬環(huán)境,可以使用deactivate 使虛擬環(huán)境無效
cat <EOF> ~/.bashrc
source ~/harmonyos/venv/bin/activate
EOF
編譯 3861 目標(biāo)平臺(tái)的命令執(zhí)行:/bin/python build.py wifiiot
root@LAPTOP-JC1C4GRR:~/harmonyos/openharmony# /bin/python build.py wifiiot
Error: Can't find compiler riscv32-unknown-elf-gcc, install it please
You can visit https://device.harmonyos.com/cn/docs/start/introduce/oem_start_guide-0000001054913231 for more infomation
都是按照文檔一步一步做的,為什么缺少編譯器呢,找了一下文件:
文件是有的,那么出現(xiàn)此問題的原因就是沒有找到此路徑,將此路徑加入到環(huán)境變量即可,其實(shí)文檔中也有添加環(huán)境變量的步驟的,只是不知道為什么沒有生效,重新執(zhí)行一下即可。
繼續(xù)執(zhí)行編譯指令:/bin/python build.py wifiiot
提示scons:command not found
輸入scons提示是存在此命令的,只是所在目錄沒有在環(huán)境變量中,所以沒辦法找到。
Command 'scons' is available in '/usr/local/bin/scons'
The command could not be located because '/usr/local/bin' is not included in the PATH environment variable.
將此路徑添加至環(huán)境變量即可,如下圖所示:

再次編譯,編譯成功。

整個(gè)下載和配置過程,耗費(fèi)了大約近一天時(shí)間,占用系統(tǒng)空間接近20G,建議安裝前系統(tǒng)盤要留出充足空間,我是不斷安裝,不斷查看系統(tǒng)空間是否夠用,不斷刪除軟件,艱難的安裝成功了。
因?yàn)檫@個(gè)下載和編譯過程我只配置了一遍,公眾號(hào)上面的文章發(fā)布完之后就不能修改了,大家可以去我的博客www.xiaohage.com上面,通過檢索關(guān)鍵字“鴻蒙”獲取最新的配置網(wǎng)文。
直接選擇閱讀原文也可以直達(dá)網(wǎng)文鏈接。
VcXsrv在文中提供的鏈接下載很慢,時(shí)常失敗,可以在留言區(qū)置頂消息獲取該軟件的下載鏈接。
《Harmony OS 開發(fā)指南——源碼下載和編譯.pdf》文檔為官方提供的完整環(huán)境搭建的文檔,我就是照著一步一步做的,基本沒有坑,出現(xiàn)的兩個(gè)問題在本文中已經(jīng)列出來了,詳細(xì)移植過程請(qǐng)參考這個(gè)文檔,同樣,在留言區(qū)置頂消息中獲取該文檔。