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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

本文介紹了如何下載鴻蒙系統源碼,如何一次性配置可以編譯三個目標平臺(Hi3516,Hi3518Hi3861)的編譯環(huán)境,以及如何將源碼編譯為三個目標平臺的二進制文件。

坑點總結

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

準備環(huán)境

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

硬件環(huán)境

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

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

軟件環(huán)境

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

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

下載源碼

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

HarmonyOS&OpenHarmony文檔學習mau123789添加拿取紫料

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

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

配置 repo 工具

如果你的Linux系統上還沒有配置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腳本,它會調用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  # 以后每天同步遠程倉的修改,只需要執(zhí)行這一條命令即可

配置環(huán)境

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

安裝文件系統打包工具

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

下載、配置編譯工具鏈

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

# 下載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目標平臺需要使用scons,默認安裝的scons版本需要python版本>=3.7):
    • sudo apt-get install --no-install-recommends python3.8 python3-pip
  • 將默認python切換為3.8(因為18.04 上默認Python3版本是 3.6),通常有兩種方式切換:
    • 使用virtualenv管理,單獨source相應的active腳本切換當前shell會話的默認python版本(推薦,下面均已這種方式進行操作);
    • 使用 update-alternatives管理,并切換全局Python腳本配置(不推薦,用完需要切換回去,否則會影響apt等依賴python3的軟件包使用);
  • 配置pip包下載源,加速國內安裝pip包:
    mkdir ~/.pip/
    cat <
    

準備virtualenv

# 安裝virtualenv
pip3 install virtualenv

# 創(chuàng)建使用python3.8為默認python解釋器的virtualenv
mkdir ~/harmonyos/venv && virtualenv -p python3.8 ~/harmonyos/venv

# 激活 virtualenv,激活后的pip3 install會將包文件緩存到相應的子目錄中
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 中,下次登錄默認自動激活此python虛擬環(huán)境,可以使用 deactivate 使虛擬環(huán)境無效
cat <

編譯源碼

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

$ source ~/harmonyos/venv/bin/activate # 激活虛擬環(huán)境,激活后 deactivate 命令可使當前虛擬環(huán)境無效
$ python build.py -h # 查看支持哪些目標平臺
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

可以查看支持哪些目標平臺,目前可選的有三個。

切換默認shell為bash

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

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

編譯3516目標平臺的命令

python build.py ipcamera_hi3516dv300 -b debug

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

編譯3518目標平臺的命令

python build.py ipcamera_hi3516dv300 -b debug

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

編譯3861目標平臺的命令

python build.py wifiiot

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

ffmpeg相關編譯失敗問題定位

編譯過程中可能會遇到ffmpeg相關的編譯失敗,可能是因為configure過程中出現了問題,可以通過vendor/hisi/hi35xx/middleware/source/third_party/ffmpeg/ffmpeg-y/ffbuild/config.log文件查看。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 源碼
    +關注

    關注

    8

    文章

    632

    瀏覽量

    29110
  • 鴻蒙
    +關注

    關注

    57

    文章

    2302

    瀏覽量

    42689
  • HarmonyOS
    +關注

    關注

    79

    文章

    1966

    瀏覽量

    29962
  • OpenHarmony
    +關注

    關注

    25

    文章

    3635

    瀏覽量

    16061
收藏 人收藏

    評論

    相關推薦

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

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

    如何獲取OpenHarmonyOS源碼?

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

    HarmonyOS學習之四:OpenHarmony源碼下載及構成簡介

    下載。適用場景用戶已通過組件式獲取的方式獲取源碼,需要對源碼中的某個或某幾個組件進行獨立升級。用戶已經比較熟悉OpenHarmony系統的開發(fā)
    發(fā)表于 11-26 09:42

    OpenHarmony下載

    OpenHarmony官方認證后,貢獻代碼到OpenHarmony社區(qū)。修復OpenHarmony的問題。學習OpenHarmony
    發(fā)表于 03-09 18:36

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

    build -f(執(zhí)行編譯)經過1個半小時后編譯成功2、OpenHarmony2.0 Hi3516系列標準系統源碼編譯及燒錄1、請連接好電
    發(fā)表于 03-24 10:52

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

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

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

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

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

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

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

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

    openharmony源碼地址 openharmony編譯運行

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

    openharmony源碼解讀

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

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

    20.04 開發(fā)板 :Pegasus物聯網開發(fā)板 MCU:Hi3861 OpenHarmony版本:3.0.1-LTS ? 3.1 OpenHarmony
    的頭像 發(fā)表于 11-01 15:10 ?924次閱讀
    【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>

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

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

    基于泰凌微電子平臺實現OpenHarmony開發(fā)——代碼下載編譯步驟

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

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

    AOSP(Android Open Source Project)是Android操作系統的開源項目,通過下載編譯AOSP源碼,您可以獲得原始的Android系統,并進行定制和開發(fā)。
    的頭像 發(fā)表于 01-17 09:49 ?3590次閱讀
    基于Android13的AOSP<b class='flag-5'>源碼</b><b class='flag-5'>下載</b>及<b class='flag-5'>編譯</b>指南