RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenHarmony開發(fā)學(xué)習(xí):【源碼下載和編譯】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-14 09:36 ? 次閱讀

本文介紹了如何下載鴻蒙系統(tǒng)源碼,如何一次性配置可以編譯三個(gè)目標(biāo)平臺(tái)(Hi3516Hi3518Hi3861)的編譯環(huán)境,以及如何將源碼編譯為三個(gè)目標(biāo)平臺(tái)的二進(jìn)制文件。

坑點(diǎn)總結(jié)

  1. 下載源碼基本上沒有太多坑,可以很順利的進(jìn)行
  2. 編譯源碼主要的一個(gè)大坑是,默認(rèn)版本的scons依賴python 3.7+,鴻蒙基礎(chǔ)編譯代碼依賴python3,需要安裝python 3.7+,并和當(dāng)前系統(tǒng)上的python2.7/python3.6和諧共處!解決方法一般有兩種:
    • 使用virtualenv管理多個(gè)版本的python環(huán)境,這種方式好處是只在當(dāng)前shell會(huì)話生效不影響系統(tǒng)環(huán)境、其他用戶和其他shell會(huì)話,缺點(diǎn)是使用前需要source active腳本稍微有點(diǎn)麻煩;
    • 使用update-alternatives管理系統(tǒng)的多個(gè)版本python命令,這種方式需要切換系統(tǒng)的鏈接/usr/bin/python/usr/bin/python3,可能會(huì)影響依賴python的應(yīng)用程序(例如apt)的正常使用、其他用戶和其他shell會(huì)話;

準(zhǔn)備環(huán)境

本節(jié)介紹下載、編譯和燒寫鴻蒙系統(tǒng)所需的軟硬件環(huán)境。
開發(fā)前HarmonyOS文檔參考:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

硬件環(huán)境

開發(fā)環(huán)境

其中,Linux主機(jī)用于源碼下載和編譯,Windows主機(jī)用于燒寫程序到單板以及源碼編輯。

軟件環(huán)境

硬件說明
Linux主機(jī)推薦實(shí)際物理機(jī)器,Ubuntu16.04及以上64位系統(tǒng),Shell使用bash,使用虛擬機(jī)也可以,如何安裝這里不做詳細(xì)介紹。
Windows主機(jī)Windows XP/Windows7/Windows10 系統(tǒng)
遠(yuǎn)程終端推薦MobaXterm(PuTTY、SecureCRT等其他遠(yuǎn)程終端也可以),用于在Windows主機(jī)上登錄Linux主機(jī),進(jìn)行源碼下載、編譯等工作
USB轉(zhuǎn)串口芯片驅(qū)動(dòng)頁(yè)面,USB-to-Serial Comm Port.exe 文件(AI Camera和DIY IPC套件附贈(zèng)的USB串口線中集成了PL2302芯片,需要安裝此驅(qū)動(dòng)才能識(shí)別)。WiFi IoT主控芯片上集成的是CH340G芯片,可以選擇聯(lián)網(wǎng)自動(dòng)安裝驅(qū)動(dòng)程序。

本文所有操作均基于Ubuntu 18.04進(jìn)行,其他發(fā)行版和Ubuntu版本上的命令操作可能不完全一致,但說明的原理可以互通。

下載源碼

搜狗高速瀏覽器截圖20240326151344.png

HarmonyOS&OpenHarmony文檔學(xué)習(xí)mau123789添加拿取紫料

本節(jié)介紹如何在Linux主機(jī)上下載鴻蒙源碼,所有命令均通過遠(yuǎn)程終端在Linux主機(jī)上執(zhí)行。

這里使用的是“從代碼倉(cāng)庫(kù)獲取”的方式,這種方式方便后續(xù)更新代碼;你也可以從官網(wǎng)下載源碼壓縮包(這里不再介紹)。

配置 repo 工具

如果你的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

下載Harmony OS源碼

mkdir -p ~/harmonyos/openharmony && cd ~/harmonyos/openharmony
sudo apt install --no-install-recommends 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í)行這一條命令即可

配置環(huán)境

本節(jié)介紹如何在Linux主機(jī)上配置鴻蒙源碼的編譯構(gòu)建環(huán)境,所有命令均通過遠(yuǎn)程終端在Linux主機(jī)上執(zhí)行。

安裝文件系統(tǒng)打包工具

  1. 運(yùn)行"mkfs.vfat",如果未找到該命令,需要安裝
  2. 運(yùn)行"mcopy ",如果未找到該命令,需要安裝
sudo apt-get install dosfstools mtools  # 官方文檔說明的兩個(gè)文件系統(tǒng)打包工具
sudo apt-get install zip       # 官方文檔雖然沒有寫,但是打包rootfs過程中需要使用
sudo apt install mtd-utils     # 3518需要打包 jffs2 鏡像的mkfs.jffs2 命令,需要安裝這個(gè)包
sudo apt install build-essential # 安裝gcc/g++/make等工具,ffmpeg的測(cè)試過程中需要使用鏈接器ld,需要這個(gè)包

下載、配置編譯工具鏈

使用如下命令,分別下載 gn、ninja、LLVM、hc-gen包,根據(jù)官方文檔修改,一步到位,不用反復(fù)復(fù)制粘貼!

# 下載gn/ninja/LLVM/hc-gen包
URL_PREFIX=https://repo.huaweicloud.com/harmonyos/compiler
DOWNLOAD_DIR=~/Downloads                # 下載目錄,可自行修改
TOOLCHAIN_DIR=~/harmonyos/toolchain     # 工具鏈存放目錄,可自行修改

[ -e $DOWNLOAD_DIR ] || mkdir $DOWNLOAD_DIR
[ -e $TOOLCHAIN_DIR ] || mkdir -p $TOOLCHAIN_DIR

wget -P $DOWNLOAD_DIR $URL_PREFIX/gn/1523/linux/gn.1523.tar
wget -P $DOWNLOAD_DIR $URL_PREFIX/ninja/1.9.0/linux/ninja.1.9.0.tar
wget -P $DOWNLOAD_DIR $URL_PREFIX/clang/9.0.0-34042/linux/llvm-linux-9.0.0-34042.tar
wget -P $DOWNLOAD_DIR $URL_PREFIX/hc-gen/0.65/linux/hc-gen-0.65-linux.tar

# 編譯 hi3861 需要 riscv 編譯工具鏈
wget -P $DOWNLOAD_DIR $URL_PREFIX/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz

# 解壓gn/ninja/LLVM/hc-gen包:
tar -C $TOOLCHAIN_DIR/ -xvf $DOWNLOAD_DIR/gn.1523.tar
tar -C $TOOLCHAIN_DIR/ -xvf $DOWNLOAD_DIR/ninja.1.9.0.tar
tar -C $TOOLCHAIN_DIR/ -xvf $DOWNLOAD_DIR/llvm-linux-9.0.0-34042.tar
tar -C $TOOLCHAIN_DIR/ -xvf $DOWNLOAD_DIR/hc-gen-0.65-linux.tar
tar -C $TOOLCHAIN_DIR/ -xvf $DOWNLOAD_DIR/gcc_riscv32-linux-7.3.0.tar.gz

# 向 ~/.bashrc 中追加gn/ninja/LLVM/hc-gen路徑配置:
cat <

安裝python3.8和pip包管理器

  • 安裝python3.8和pip(編譯鴻蒙源碼hi3861目標(biāo)平臺(tái)需要使用scons,默認(rèn)安裝的scons版本需要python版本>=3.7):
    • sudo apt-get install --no-install-recommends python3.8 python3-pip
  • 將默認(rèn)python切換為3.8(因?yàn)?8.04 上默認(rèn)Python3版本是 3.6),通常有兩種方式切換:
    • 使用virtualenv管理,單獨(dú)source相應(yīng)的active腳本切換當(dāng)前shell會(huì)話的默認(rèn)python版本(推薦,下面均已這種方式進(jìn)行操作);
    • 使用 update-alternatives管理,并切換全局Python腳本配置(不推薦,用完需要切換回去,否則會(huì)影響apt等依賴python3的軟件包使用);
  • 配置pip包下載源,加速國(guó)內(nèi)安裝pip包:
    mkdir ~/.pip/
    cat <
    

準(zhǔn)備virtualenv

# 安裝virtualenv
pip3 install virtualenv

# 創(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 <

編譯源碼

激活剛剛建立的python虛擬環(huán)境后,在源碼根目錄下(openharmony目錄)執(zhí)行:

$ source ~/harmonyos/venv/bin/activate # 激活虛擬環(huán)境,激活后 deactivate 命令可使當(dāng)前虛擬環(huán)境無效
$ python build.py -h # 查看支持哪些目標(biāo)平臺(tái)
usage:
  python build.py ipcamera_hi3516dv300
  python build.py ipcamera_hi3518ev300
  python build.py wifiiot

  Quickstart: https://device.harmonyos.com/cn/docs/start/introduce/oem_start_guide-0000001054913231

positional arguments:
  product               Name of the product

optional arguments:
  -h, --help            show this help message and exit
  -b BUILD_TYPE, --build_type BUILD_TYPE
                        release or debug version.
  -t [TEST [TEST ...]], --test [TEST [TEST ...]]
                        Compile test suit
  -n, --ndk             Compile ndk

可以查看支持哪些目標(biāo)平臺(tái),目前可選的有三個(gè)。

切換默認(rèn)shell為bash

vendor目錄下的部分Makefile里面使用了bash特有的pushd/popd命令,需要使用bash環(huán)境才能編譯通過,有兩種方法切換默認(rèn)shell:

  1. sudo dpkg-reconfigure dash彈出對(duì)話框之后選擇No;
  2. sudo rm /bin/sh && sudo ln -s /bin/bash /bin/sh;

編譯3516目標(biāo)平臺(tái)的命令

python build.py ipcamera_hi3516dv300 -b debug

編譯生成的kernel、rootfs、userfs映像文件會(huì)生成到out/ipcamera_hi3516dv300目錄下,u-boot二進(jìn)制會(huì)生成在vendor目錄(可以通過find vendor -name u-boot*.bin命令進(jìn)行查找)。

編譯3518目標(biāo)平臺(tái)的命令

python build.py ipcamera_hi3516dv300 -b debug

編譯生成的kernel、rootfs、userfs映像文件會(huì)生成到out/ipcamera_hi3518ev300目錄下,u-boot二進(jìn)制會(huì)生成在vendor目錄(可以通過find vendor -name u-boot*.bin命令進(jìn)行查找)。

編譯3861目標(biāo)平臺(tái)的命令

python build.py wifiiot

編譯生成的二進(jìn)制文件位于out/wifiiot/子目錄下,刷機(jī)需要使用Hi3861_wifiiot_app_allinone.bin文件。

ffmpeg相關(guān)編譯失敗問題定位

編譯過程中可能會(huì)遇到ffmpeg相關(guān)的編譯失敗,可能是因?yàn)?code>configure過程中出現(xiàn)了問題,可以通過vendor/hisi/hi35xx/middleware/source/third_party/ffmpeg/ffmpeg-y/ffbuild/config.log文件查看。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 源碼
    +關(guān)注

    關(guān)注

    8

    文章

    639

    瀏覽量

    29185
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2339

    瀏覽量

    42805
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1973

    瀏覽量

    30142
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3713

    瀏覽量

    16254
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【軟通動(dòng)力鴻湖萬聯(lián)揚(yáng)帆系列“競(jìng)”開發(fā)板試用體驗(yàn)】OpenHarmony源碼編譯環(huán)境攻略

    開發(fā)板試用體驗(yàn)】認(rèn)識(shí)"競(jìng)" 筆者帶大家認(rèn)識(shí)了揚(yáng)帆系列“競(jìng)”開發(fā)板,本節(jié)將講解OpenHarmony源碼編譯環(huán)境搭建以及將
    的頭像 發(fā)表于 10-13 10:30 ?3055次閱讀
    【軟通動(dòng)力鴻湖萬聯(lián)揚(yáng)帆系列“競(jìng)”<b class='flag-5'>開發(fā)</b>板試用體驗(yàn)】<b class='flag-5'>OpenHarmony</b><b class='flag-5'>源碼</b><b class='flag-5'>編譯</b>環(huán)境攻略

    如何獲取OpenHarmonyOS源碼?

    OpenHarmony源碼目錄結(jié)構(gòu)。OpenHarmony的代碼以組件的形式開放,開發(fā)者可以通過如下其中一種方式獲?。韩@取方式1:從鏡像站點(diǎn)下載
    發(fā)表于 09-10 18:03

    HarmonyOS學(xué)習(xí)之四:OpenHarmony源碼下載及構(gòu)成簡(jiǎn)介

    下載。適用場(chǎng)景用戶已通過組件式獲取的方式獲取源碼,需要對(duì)源碼中的某個(gè)或某幾個(gè)組件進(jìn)行獨(dú)立升級(jí)。用戶已經(jīng)比較熟悉OpenHarmony系統(tǒng)的開發(fā)
    發(fā)表于 11-26 09:42

    OpenHarmony下載

    OpenHarmony官方認(rèn)證后,貢獻(xiàn)代碼到OpenHarmony社區(qū)。修復(fù)OpenHarmony的問題。學(xué)習(xí)OpenHarmony
    發(fā)表于 03-09 18:36

    OpenHarmony2.0 Hi3516系列資料下載合集(源碼編譯+燒錄)

    build -f(執(zhí)行編譯)經(jīng)過1個(gè)半小時(shí)后編譯成功2、OpenHarmony2.0 Hi3516系列標(biāo)準(zhǔn)系統(tǒng)源碼編譯及燒錄1、請(qǐng)連接好電
    發(fā)表于 03-24 10:52

    【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】第3章 OpenHarmony源碼編譯下載

    開發(fā)環(huán)境:開發(fā)系統(tǒng):Ubuntu 20.04開發(fā)板:Pegasus物聯(lián)網(wǎng)開發(fā)板MCU:Hi3861OpenHarmony版本:3.0.1-L
    發(fā)表于 06-03 23:40

    OpenHarmony開發(fā)——系統(tǒng)源碼編譯

    背景隨著OpenHarmony-v3.1的發(fā)布,越來越多的開發(fā)者將目光聚焦到OpenHarmony系統(tǒng)開發(fā)上。對(duì)于首次接觸OpenHarmony
    發(fā)表于 08-30 10:08

    【軟通動(dòng)力鴻湖萬聯(lián)揚(yáng)帆系列“競(jìng)”開發(fā)板試用體驗(yàn)】OpenHarmony源碼編譯環(huán)境攻略

    前言通過【軟通動(dòng)力鴻湖萬聯(lián)揚(yáng)帆系列“競(jìng)”開發(fā)板試用體驗(yàn)】認(rèn)識(shí)"競(jìng)"筆者帶大家認(rèn)識(shí)了揚(yáng)帆系列“競(jìng)”開發(fā)板,本節(jié)將講解OpenHarmony源碼編譯
    發(fā)表于 09-25 15:05

    OpenHarmony嵌入式系統(tǒng)原理與應(yīng)用——基于RK2206芯片(微課視頻版)》學(xué)習(xí)記錄1 環(huán)境配置與源碼編譯

    ,需要配置rk2206開發(fā)板的IP地址和SSH連接。 二、源碼下載編譯 獲取OpenHarmony源碼
    發(fā)表于 06-25 11:26

    openharmony源碼地址 openharmony編譯運(yùn)行

    一、Openharmony源碼地址以及獲取方式 開源代碼倉(cāng)庫(kù)地址:https://openharmony.gitee.com 1:從鏡像站點(diǎn)下載歸檔后的發(fā)行版壓縮文件。 2:通過HPM
    的頭像 發(fā)表于 06-23 10:49 ?2670次閱讀

    openharmony源碼解讀

    如何獲取OpenHarmony源碼并說明OpenHarmony源碼目錄結(jié)構(gòu)。OpenHarmony的代碼以組件的形式開放,
    的頭像 發(fā)表于 06-24 09:29 ?3807次閱讀

    【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】第3章 OpenHarmony源碼編譯下載

    20.04 開發(fā)板 :Pegasus物聯(lián)網(wǎng)開發(fā)板 MCU:Hi3861 OpenHarmony版本:3.0.1-LTS ? 3.1 OpenHarmony
    的頭像 發(fā)表于 11-01 15:10 ?983次閱讀
    【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】第3章 <b class='flag-5'>OpenHarmony</b><b class='flag-5'>源碼</b><b class='flag-5'>編譯</b>與<b class='flag-5'>下載</b>

    基于泰凌微電子平臺(tái)實(shí)現(xiàn)OpenHarmony開發(fā)——編譯環(huán)境搭建

    在獲取OpenHarmony源碼進(jìn)行開發(fā)之前,首先要配置好編譯環(huán)境,本文主要詳細(xì)介紹開發(fā)所需環(huán)境并安裝
    的頭像 發(fā)表于 02-22 10:10 ?1829次閱讀

    基于泰凌微電子平臺(tái)實(shí)現(xiàn)OpenHarmony開發(fā)——代碼下載編譯步驟

    上一節(jié)我們安裝了一系列開發(fā)工具,準(zhǔn)備好了OpenHarmony開發(fā)環(huán)境,這一節(jié)將會(huì)詳細(xì)介紹OpenHarmony代碼下載和進(jìn)行
    的頭像 發(fā)表于 03-08 13:47 ?1398次閱讀

    基于Android13的AOSP源碼下載編譯指南

    AOSP(Android Open Source Project)是Android操作系統(tǒng)的開源項(xiàng)目,通過下載編譯AOSP源碼,您可以獲得原始的Android系統(tǒng),并進(jìn)行定制和開發(fā)。
    的頭像 發(fā)表于 01-17 09:49 ?3925次閱讀
    基于Android13的AOSP<b class='flag-5'>源碼</b><b class='flag-5'>下載</b>及<b class='flag-5'>編譯</b>指南
    RM新时代网站-首页