0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenHarmony开发学习:【源码下载和编译】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-04-14 09:36 次阅读

本文介绍了如何下载鸿蒙系统源码,如何一次性配置可以编译三个目标平台(Hi3516Hi3518Hi3861)的编译环境,以及如何将源码编译为三个目标平台的二进制文件。

坑点总结

  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会话;

准备环境

本节介绍下载、编译和烧写鸿蒙系统所需的软硬件环境。
开发前HarmonyOS文档参考:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

硬件环境

开发环境

其中,Linux主机用于源码下载和编译,Windows主机用于烧写程序到单板以及源码编辑。

软件环境

硬件说明
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进行,其他发行版和Ubuntu版本上的命令操作可能不完全一致,但说明的原理可以互通。

下载源码

搜狗高速浏览器截图20240326151344.png

HarmonyOS&OpenHarmony文档学习mau123789添加拿取紫料

本节介绍如何在Linux主机上下载鸿蒙源码,所有命令均通过远程终端在Linux主机上执行。

这里使用的是“从代码仓库获取”的方式,这种方式方便后续更新代码;你也可以从官网下载源码压缩包(这里不再介绍)。

配置 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  # 以后每天同步远程仓的修改,只需要执行这一条命令即可

配置环境

本节介绍如何在Linux主机上配置鸿蒙源码的编译构建环境,所有命令均通过远程终端在Linux主机上执行。

安装文件系统打包工具

  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

# 创建使用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虚拟环境,可以使用 deactivate 使虚拟环境无效
cat <

编译源码

激活刚刚建立的python虚拟环境后,在源码根目录下(openharmony目录)执行:

$ source ~/harmonyos/venv/bin/activate # 激活虚拟环境,激活后 deactivate 命令可使当前虚拟环境无效
$ 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环境才能编译通过,有两种方法切换默认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文件查看。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 源码
    +关注

    关注

    8

    文章

    639

    浏览量

    29185
  • 鸿蒙
    +关注

    关注

    57

    文章

    2339

    浏览量

    42805
  • HarmonyOS
    +关注

    关注

    79

    文章

    1973

    浏览量

    30143
  • OpenHarmony
    +关注

    关注

    25

    文章

    3713

    浏览量

    16254
收藏 人收藏

    评论

    相关推荐

    【软通动力鸿湖万联扬帆系列“竞”开发板试用体验】OpenHarmony源码编译环境攻略

    开发板试用体验】认识"竞" 笔者带大家认识了扬帆系列“竞”开发板,本节将讲解OpenHarmony源码编译环境搭建以及将
    的头像 发表于 10-13 10:30 3056次阅读
    【软通动力鸿湖万联扬帆系列“竞”<b class='flag-5'>开发</b>板试用体验】<b class='flag-5'>OpenHarmony</b><b class='flag-5'>源码</b><b class='flag-5'>编译</b>环境攻略

    如何获取OpenHarmonyOS源码

    OpenHarmony源码目录结构。OpenHarmony的代码以组件的形式开放,开发者可以通过如下其中一种方式获取:获取方式1:从镜像站点下载
    发表于 09-10 18:03

    HarmonyOS学习之四:OpenHarmony源码下载及构成简介

    下载。适用场景用户已通过组件式获取的方式获取源码,需要对源码中的某个或某几个组件进行独立升级。用户已经比较熟悉OpenHarmony系统的开发
    发表于 11-26 09:42

    OpenHarmony下载

    OpenHarmony官方认证后,贡献代码到OpenHarmony社区。修复OpenHarmony的问题。学习OpenHarmony
    发表于 03-09 18:36

    OpenHarmony2.0 Hi3516系列资料下载合集(源码编译+烧录)

    build -f(执行编译)经过1个半小时后编译成功2、OpenHarmony2.0 Hi3516系列标准系统源码编译及烧录1、请连接好电
    发表于 03-24 10:52

    【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】第3章 OpenHarmony源码编译下载

    开发环境:开发系统:Ubuntu 20.04开发板:Pegasus物联网开发板MCU:Hi3861OpenHarmony版本:3.0.1-L
    发表于 06-03 23:40

    OpenHarmony开发——系统源码编译

    背景随着OpenHarmony-v3.1的发布,越来越多的开发者将目光聚焦到OpenHarmony系统开发上。对于首次接触OpenHarmony
    发表于 08-30 10:08

    【软通动力鸿湖万联扬帆系列“竞”开发板试用体验】OpenHarmony源码编译环境攻略

    前言通过【软通动力鸿湖万联扬帆系列“竞”开发板试用体验】认识"竞"笔者带大家认识了扬帆系列“竞”开发板,本节将讲解OpenHarmony源码编译
    发表于 09-25 15:05

    OpenHarmony嵌入式系统原理与应用——基于RK2206芯片(微课视频版)》学习记录1 环境配置与源码编译

    ,需要配置rk2206开发板的IP地址和SSH连接。 二、源码下载编译 获取OpenHarmony源码
    发表于 06-25 11:26

    openharmony源码地址 openharmony编译运行

    一、Openharmony源码地址以及获取方式 开源代码仓库地址:https://openharmony.gitee.com 1:从镜像站点下载归档后的发行版压缩文件。 2:通过HPM
    的头像 发表于 06-23 10:49 2671次阅读

    openharmony源码解读

    如何获取OpenHarmony源码并说明OpenHarmony源码目录结构。OpenHarmony的代码以组件的形式开放,
    的头像 发表于 06-24 09:29 3807次阅读

    【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】第3章 OpenHarmony源码编译下载

    20.04 开发板 :Pegasus物联网开发板 MCU:Hi3861 OpenHarmony版本:3.0.1-LTS   3.1 OpenHarmony
    的头像 发表于 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>

    基于泰凌微电子平台实现OpenHarmony开发——编译环境搭建

    在获取OpenHarmony源码进行开发之前,首先要配置好编译环境,本文主要详细介绍开发所需环境并安装
    的头像 发表于 02-22 10:10 1829次阅读

    基于泰凌微电子平台实现OpenHarmony开发——代码下载编译步骤

    上一节我们安装了一系列开发工具,准备好了OpenHarmony开发环境,这一节将会详细介绍OpenHarmony代码下载和进行
    的头像 发表于 03-08 13:47 1399次阅读

    基于Android13的AOSP源码下载编译指南

    AOSP(Android Open Source Project)是Android操作系统的开源项目,通过下载编译AOSP源码,您可以获得原始的Android系统,并进行定制和开发
    的头像 发表于 01-17 09:49 3929次阅读
    基于Android13的AOSP<b class='flag-5'>源码</b><b class='flag-5'>下载</b>及<b class='flag-5'>编译</b>指南