2 开源鸿蒙OpenHarmony4.1源码下载和编译流程

开源鸿蒙OpenHarmony源码下载和编译流程

作者将狼才鲸
日期2024-02-29

  • 前景提要:

  • 确定你要编译哪一块开发板:

    • 我选择qemu_mini_system_demo 这个板子
    • 编译形态整体说明,含QEMU,可以编译哪些开发板和芯片
    • qemu模拟器 + arm核 + mini轻型系统的配置有:
      • qemu_mini_system_demo arm_mps2_an386 qemu liteos_m mini arm-cortex-m4
      • qemu_cm55_mini_system_demo arm_mps3_an547 qemu liteos_m mini arm-cortex-m55
      • Qemu Arm Cortex-m4 mps2-an386 教程
      • Qemu Arm Cortex-m55 mps3-an547 教程
      • QEMU(Quick Emulator)鸿蒙QEMU模拟器操作指南
  • 安装基础开发环境:安装VMware虚拟机+Ubuntu发行版系统+Git软件+repo软件+Python

  • 编译开源鸿蒙源码前先下载源码

    • 步骤见:开源鸿蒙OpenHarmony niobe407 STM32F407IGT6芯片轻型系统全量源码4.1版本下载流程
    • 使用 repo init -u https://gitee.com/openharmony/manifest -b master -m chipsets/qemu.xml -g ohos:mini 初始化对应于QEMU模拟器(类似于开发板)的全套源码
    • 按前面的步骤下载鸿蒙源码
  • 编译:

  • 编译的相关介绍

    • 需要使用hb命令,也就是ohos-build
      • 了解OpenHarmony-编译
      • OpenHarmony支持hb和build.sh两种编译方式。
      • 安装hb编译工具
      • 安装库和工具集
      • .sh方式编译构建指导
    • 安装流程介绍:
      • hb安装异常处理
      • 快速入门-如何编译程序
      • 安装库和工具集-编译流程

  • 编译步骤(先安装编译工具):

    • python3 -V 查看python版本,如果是3.8以下,则:

      • sudo apt install python3.8
      • sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
      • sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
      • sudo update-alternatives --config python3
      • python3 -V
    • python3 -m pip install --user ohos-build

      • pip3是Python的包管理工具,用于安装、升和管理Python包
      • 需要python3.8以上的版本
  • 如果你是Ubuntu18.04,则先执行

    • cd /usr/lib/python3/dist-packages
    • cp apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so apt_pkg.cpython-39m-x86_64-linux-gnu.so apt_pkg.so
    • cd -
  • 先安装依赖库

  • sudo apt-get update && sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g+±multilib gcc-arm-linux-gnueabi libc6-dev-i386 libc6-dev-amd64 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons python3.8-distutils tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev 安装编译时依赖的软件和库

    • 仔细看安装后的信息,如果提示有哪些包未安装成功,则你需要单独安装
    • sudo apt-get install g+±multilib 这里其实是g加号加号减号multilib,会被csdn识别成别的格式
    • sudo apt-get install gcc-arm-linux-gnueabi
    • sudo apt-get install gcc-multilib
    • sudo apt-get install lib32ncurses5-dev
    • sudo apt-get install lib32z1-dev
    • sudo apt-get install libc6-dev-i386
  • 按前面的流程下载全量源码,或者特定开发板特定芯片的源码

  • 进入到你下载的源码根目录

  • bash build/prebuilts_download.sh 安装和芯片相关的编译器和二进制工具,全自动的,会下载的同时进行安装,要等待一段时间,有进度条

  • python3 -m pip install --user build/hb

  • gedit ~/.bashrc

  • 将 export PATH=~/.local/bin:$PATH 加入到最后一行并保存退出

  • source ~/.bashrc

  • hb --help 这个命令执行时可能有报错,有什么错误就解决什么错误,例如用下面方法解决报错

    • python3 -m pip uninstall ohos-build
    • python3 -m pip install --user ohos-build==0.4.3
  • hb set 进行编译设置

    • 第一步目录输入. 选择源码根目录的当前目录
    • 第二步选择开发板,我使用上下方向键选择qemu_mini_system_demo这款qemu的模拟器开发板,ARM Cortex-M4内核的虚拟芯片
      • 编译形态整体说明,含QEMU,可以编译哪些开发板和芯片
      • Qemu Arm Cortex-m4 mps2-an386 教程
      • qemu_mini_system_demo arm_mps2_an386 qemu liteos_m mini arm-cortex-m4
jim@ubuntu:~/openHarmony$ hb set
[OHOS INFO] Input code path: .
OHOS Which product do you need?  qemu_mini_system_demo
  • hb build -f 开始编译,有报错则处理报错

  • 出现build success表示编程成功,然后进行烧录,或者直接用QEMU模拟器进行运行。

  • 防止格式被破坏

* python3 -V  查看python版本,如果是3.8以下,则:* sudo apt install python3.8* sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1* sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2* sudo update-alternatives --config python3* python3 -V* python3 -m pip install --user ohos-build* pip3是Python的包管理工具,用于安装、升和管理Python包* 需要python3.8以上的版本* 安装流程介绍:* [hb安装异常处理](https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/quick-start/quickstart-pkg-common-hberr.md/)  * [快速入门-如何编译程序](https://gitee.com/openharmony/docs/tree/master/zh-cn/device-dev/quick-start)* [安装库和工具集-编译流程](https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/quick-start/quickstart-pkg-install-package.md)* 如果你是Ubuntu18.04,则先执行* cd /usr/lib/python3/dist-packages* cp apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so apt_pkg.cpython-39m-x86_64-linux-gnu.so apt_pkg.so* cd -* 先安装依赖库
* sudo apt-get update && sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib gcc-arm-linux-gnueabi libc6-dev-i386 libc6-dev-amd64 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons python3.8-distutils tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev  安装编译时依赖的软件和库* 仔细看安装后的信息,如果提示有哪些包未安装成功,则你需要单独安装* sudo apt-get install g++-multilib* sudo apt-get install gcc-arm-linux-gnueabi* sudo apt-get install gcc-multilib* sudo apt-get install lib32ncurses5-dev* sudo apt-get install lib32z1-dev* sudo apt-get install libc6-dev-i386* 按前面的流程下载全量源码,或者特定开发板特定芯片的源码
* 进入到你下载的源码根目录
* bash build/prebuilts_download.sh  安装和芯片相关的编译器和二进制工具,全自动的,会下载的同时进行安装,要等待一段时间,有进度条
* python3 -m pip install --user build/hb
* gedit ~/.bashrc
* 将 export PATH=~/.local/bin:$PATH 加入到最后一行并保存退出
* source ~/.bashrc
* hb --help    这个命令执行时可能有报错,有什么错误就解决什么错误,例如用下面方法解决报错* python3 -m pip uninstall ohos-build* python3 -m pip install --user ohos-build==0.4.3
* hb set  进行编译设置* 第一步目录输入.  选择源码根目录的当前目录* 第二步选择开发板,我使用上下方向键选择qemu_mini_system_demo这款qemu的模拟器开发板,ARM Cortex-M4内核的虚拟芯片* [编译形态整体说明,含QEMU,可以编译哪些开发板和芯片](https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/quick-start/quickstart-appendix-compiledform.md/)* [Qemu Arm Cortex-m4 mps2-an386 教程](https://gitee.com/openharmony/device_qemu/blob/master/arm_mps2_an386/README_zh.md)* qemu_mini_system_demo	arm_mps2_an386	qemu	liteos_m	mini	arm-cortex-m4* hb build -f  开始编译,有报错则处理报错
* 出现build success表示编程成功,然后进行烧录,或者直接用QEMU模拟器进行运行。
  • 参考资料:
    • 基于OpenHarmony搭建的Qemu仿真实验环境
    • ohos-build 安装失败分析
    • 基于Ubuntu20.04搭建OpenHarmony v3.0.6的qemu仿真环境
    • 基于OpenHarmony搭建的Qemu仿真实验环境
    • 搭建一个鸿蒙运行环境,来一窥神秘鸿蒙

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/709556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Keepalived 双机热备基础知识

7.1 Keepalived 双机热备基础知识 Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover) 和健康检查査(Health Checking)功能一一判断LVS 负载调度器、节点服务器的可用性,及时隔离并替 换为新的服务器,当故…

Container killed on request. Exit code is 143

Bug信息 WARN YarnAllocator: Container marked as failed: container_e33_1480922439133_0845_02_000002 on host: hdp4. Exit status: 143. Diagnostics: Container killed on request. Exit code is 143 Container exited with a non-zero exit code 143 Killed by externa…

day03_登录注销(前端接入登录,异常处理, 图片验证码,获取用户信息接口,退出功能)

文章目录 1. 前端接入登录1.1 修改前端代码1.2 跨域请求1.2.1 跨域请求简介1.2.2 COSR概述CORS简介CORS原理 1.2.3 CORS解决跨域 2. 异常处理2.1 提示空消息分析2.2 系统异常分类2.3 异常处理2.2.1 方案一2.2.2 方案二 3. 图片验证码3.1 图片验证码意义3.2 实现思路3.3 后端接口…

java找工作之JavaWeb(一)

JavaWeb 一个web应用有多部份组成(静态web,动态web) html,css,jsjsp,servletjava程序jar包配置文件(Properties) web应用程序编写完毕后,若想提供给外界访问,需要一个服务器来统一…

【IC验证】数据类型

一、思维导图 二、代码 (1)字符串 字符串的结尾不带空标识符null,\0。是动态存储方式,因此不用担心存储空间被用完。 编辑.SV文件使用 gvim 文件名 运行仿真使用 vcs -sverilog -full64 string_type.sv 和./simv命令如果是字…

【微服务】微服务架构包含哪些组件、各个组件又承担什么职责呢?

前面的文章里我们介绍了微服务架构的一些基础知识以及特点,也提到了国产的微服务架构标准实现SpringCloud Alibaba,聊了这么多,还是没有开始阐述各组件在Java技术体系中的具体实现。那从这里开始,我们开始全面认识微服务架构在Jav…

vue实现图片上传至oss,返回url插入数据库,最后在前端页面上回显图片

vue前端上传图像 写一个弹窗上传图片 上传图片的方式是oss&#xff0c;在上传之后将url存入数据库&#xff0c;下一步则是在列表上回显 <template><el-dialog:title"新增":visible.sync"dialogVisible":close-on-click-modal"false"…

不同类型的工业网关有何区别?

工业网关是一种用于连接工业设备和网络的关键设备&#xff0c;它能够将不同协议、不同传输速率的工业设备连接到网络上&#xff0c;实现数据的传输和共享。不同类型的工业网关之间存在一些区别&#xff0c;以下是一些常见的工业网关类型及其区别&#xff1a; 协议转换型工业网关…

上拉电阻与下拉电阻、电容的作用

上拉电阻与下拉电阻 在单片机电路中&#xff0c;上拉电阻和下拉电阻都是常见的电路元件&#xff0c;它们在数字电路设计中扮演着重要的角色。它们的作用如下&#xff1a; 1. **上拉电阻**&#xff1a; - **作用**&#xff1a;当一个引脚没有外部信号时&#xff0c;上拉电阻…

微调(Fine-tuning)技术概念

——微调&#xff0c;像化妆&#xff0c;一种“精细化、风格性调整”的人工美颜技能。 微调&#xff08;Fine-tuning&#xff09;是指在深度学习领域中&#xff0c;特别是针对预训练模型的一种训练策略。预先训练好的模型通常是在大规模无标注数据上通过自监督学习得到的&#…

【Micropython】I2C层次结构、I2C协议

文章目录 前言一、I2C的结构层次1.1 怎样在两个设备之间传输数据1.2 I2C如何传输数据1.3 硬件框图1.4 软件层次 二、IIC协议2.1 硬件连接2.2 I2C 总线的概念2.3 传输数据类比2.3 I2C信号2.4 I2C数据的含义 总结 前言 I2C&#xff08;Inter-Integrated Circuit&#xff09;是一…

【Redis】redis事务和发布订阅

Redis 事务 Redis 事务可以一次执行多个命令&#xff0c; 并且带有以下三个重要的特性&#xff1a; 批量操作在发送 EXEC 命令前被放入队列缓存。收到 EXEC 命令后进入事务执行&#xff0c;事务中任意命令执行失败&#xff0c;其余的命令依然被执行。在事务执行过程&#xff…

卸载云服务器上的 MySQL 数据库

执行以下命令以停止 MySQL 服务&#xff1a; sudo service mysql stop执行以下命令以彻底卸载 MySQL&#xff1a; sudo apt-get remove --purge mysql-server mysql-client mysql-common sudo apt-get autoremove sudo apt-get autoclean 这将删除 MySQL 数据库服务器、客…

C++设计模式——抽象工厂模式

文章目录 抽象工厂模式的主要组成部分抽象工厂模式的一个典型例子抽象工厂模式用于其他场景抽象工厂模式与其他设计模式结合使用 C 中的抽象工厂模式是一种创建型设计模式&#xff0c;它主要用于处理对象家族的创建&#xff0c;这些对象之间可能存在一定的关联关系或属于相同的…

国产航顺HK32F030M: HK32F030MJ4M6_SOP8资料

最小系统 参考资料 [1] 航顺MCU HK32F030MJ4M6-SOP8 各个文件夹简介&#xff1a; Boards&#xff1a;HK32F030xMF4P6开发板的BSP驱动代码。 Documents&#xff1a;HK32F030xMxx数据手册、用户手册、API手册以及HK32F030xMxx开发板原理图。 Package&#xff1a;HK32F030xMxx Ke…

React.FC详细解说

React.FC 是 React 中的一个泛型&#xff0c;用于定义函数式组件&#xff08;Functional Component&#xff09;。在 TypeScript 中&#xff0c;React.FC 可以帮助开发者进行类型推导&#xff0c;使得编写 React 组件更加方便。 React.FC 的定义如下&#xff1a; typescript复…

任务系统之API子任务

日常运维工作中有许多的任务要执行&#xff0c;例如项目发布/数据备份/定时巡检/证书更新/漏洞修复等等&#xff0c;大部分的任务都会有多个步骤共同完成&#xff0c;例如一个发布任务会有拉代码、编译、分发、通知等等步骤&#xff0c;而不同的任务可能还包含相同或相似的步骤…

PRL算法调控

伴随汽车电子技术发展&#xff0c;传统轮式车辆制动系统的气体或液体传输管路长&#xff0c;阀类原件多原有的真空助力系统无法兼顾车辆的再生制动功能&#xff0c;而再生制动功能是混合动力车辆是混动车辆最主要的市场优势之一&#xff0c;真空助力器逐渐被eBooster 所取代。针…

微信小程序 - 渲染和逻辑

通信模型 渲染层的界面使用了WebView 进行渲染&#xff1b;逻辑层采用JsCore线程运行JS脚本。 数据驱动 WXML会解析对应model值&#xff0c;并生成js对象&#xff0c;最后生成最终的dom树。 当model发生变更时候&#xff0c;会判断解析wxml后的js对象是否改动&#xff0c;若改动…

[重磅更新] Mac玩游戏必备!Crossover24版现已上线!附免费升级攻略 Crossover软件使用方法安装程序 免费版

好久不见啦&#xff0c;最近一直在忙着研究Mac玩游戏&#xff0c;什么幻兽帕鲁、女神异闻录之类的&#xff0c;有些沉迷了&#xff0c;实在对不住大家… 不过今天还是给大家带来了好消息&#xff01;那就是让Mac玩游戏不再是笑话的神器&#xff0c;Crossover正式发布了2024版&a…