当OpenHarmony遇上OpenEuler

1、 安装openEuler

虚拟机、物理机器当然都可以安装。虚拟机又可以使用WSL、或者VMWare、VirtualBox虚拟机软件,如果需要安装最新版本,建议使用后者。当前WSL只支持OpenEuler 20.03。

1.1 WSL openEuler

WSL的安装都是程序员的必备技能了,不展开如何开启WSL了。打开Windows Store搜索openEuler,如下图所示,进行安装即可。

安装后,可以查看版本信息:

[ken@kenneth ~]$ cat /etc/os-release
NAME="openEuler"
VERSION="20.03 (LTS-SP1)"
ID="openEuler"
VERSION_ID="20.03"
PRETTY_NAME="openEuler 20.03 (LTS-SP1)"
ANSI_COLOR="0;31"

1.2 虚拟机安装

可以访问openEuler镜像服务器https://repo.huaweicloud.com/openeuler/,下载ISO文件,如https://repo.huaweicloud.com/openeuler/openEuler-21.09/ISO/x86_64/openEuler-21.09-everything-x86_64-dvd.iso。然后使用VMWare或者VirtualBox安装。本文以WSL openEuler为例,虚拟机安装也比较简单,不再展开。

安装服务器后,执行uname -a查看系统架构,根据架构下载不同的openEulerOS.repo到/etc/yum.repos.d/目录下,执行下述命令设置软件包镜像。

wget -O /etc/yum.repos.d/openEulerOS.repo https://repo.huaweicloud.com/repository/conf/openeuler_x86_64.repo
yum clean all   # 清除原有yum缓存。
yum makecache   #生成新的缓存。

这里就想放张图,比较喜欢华为云镜像服务器https://mirrors.huaweicloud.com,大家也可以访问试试。

2、准备编译OpenHarmony的软件环境

参考在Ubuntu编译服务器上编译OpenHarmony的软件环境,准备openEuler上的环境。主要参考文件为: https://gitee.com/openharmony/docs/blob/master/docker/Dockerfile,还有获取源代码文档页面。使用的openEuler版本就是WSL openEuler 20.03。

2.1 安装软件包

下面这些软件包对有些开发板的编译可能是不全的,需要另行安装些其他软件。⑴处命令会安装gcc、c++等开发相关的软件包。对于openEuler 20.03,安装的gcc版本为V7.3.0,版本有些低。如果有需要高版本gcc比如 gcc 9.3.0版本,建议使用更高版本的openEuler。

    sudo yum install curl wget -y
	sudo yum install vim -y
	sudo yum install openssh -y
	sudo yum install git -y
	sudo yum install dosfstools -y
	sudo yum install mtools -y
	sudo yum install scons -y
	sudo yum install make -y
	sudo yum install libffi-devel -y
	sudo yum install zip -y
	sudo yum install binutils -y
	sudo yum install bison -y
	sudo yum install flex -y
	sudo yum install bc -y
	sudo yum install doxygen -y
⑴  sudo yum groupinstall "Development Tools" -y
	sudo yum install ruby -y

2.2 安装工具软件

下面安装的工具软件中,部分工具软件对有些开发板是冗余,非必要的,都先安装下。首先wget获取软件压缩包,然后解压,最后在环境变量配置文件中进行增加。

	sudo mkdir -p /home/tools
	sudo wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/clang/10.0.1-62608/linux/llvm.tar.gz
	sudo wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/hc-gen/0.65/linux/hc-gen-0.65-linux.tar
	sudo wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz
	sudo wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
	sudo wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/gn/1717/linux/gn-linux-x86-1717.tar.gz
	sudo wget -P /home/tools https://mirrors.huaweicloud.com/nodejs/v12.20.0/node-v12.20.0-linux-x64.tar.gz
	sudo wget -P /home/tools https://repo.huaweicloud.com/harmonyos/develop_tools/hmos_app_packing_tool.jar
	sudo wget -P /home/tools https://repo.huaweicloud.com/harmonyos/develop_tools/hapsigntoolv2.jar
    sudo tar xvf /home/tools/llvm.tar.gz -C /home/tools
	sudo tar xvf /home/tools/hc-gen-0.65-linux.tar -C /home/tools
	sudo tar xvf /home/tools/gcc_riscv32-linux-7.3.0.tar.gz -C /home/tools
	sudo tar xvf /home/tools/ninja.1.9.0.tar -C /home/tools
	sudo tar xvf /home/tools/gn-linux-x86-1717.tar.gz -C /home/tools
	sudo tar xvf /home/tools/node-v12.20.0-linux-x64.tar.gz -C /home/tools
	sed -i '$aexport PATH=/home/tools/llvm/bin:$PATH' ~/.bashrc 
	sed -i '$aexport PATH=/home/tools/hc-gen:$PATH' ~/.bashrc 
	sed -i '$aexport PATH=/home/tools/gcc_riscv32/bin:$PATH' ~/.bashrc 
	sed -i '$aexport PATH=/home/tools/ninja:$PATH' ~/.bashrc 
	sed -i '$aexport PATH=/home/tools/node-v12.20.0-linux-x64/bin:$PATH' ~/.bashrc 
	sed -i '$aexport PATH=/home/tools:$PATH' ~/.bashrc 
	sed -i '$aexport PATH=~/.local/bin:$PATH' ~/.bashrc
    source ~/.bashrc
    rm -rf /home/tools/*.tar
	rm -rf /home/tools/*.gz

2.3 安装git-lfs

可以在站点https://gitee.com/mirrors/git-lfs获取git-lfs的源码,进行源码安装git-lfs,但是还需要安装Go等,环境准备复杂。我们这里使用现成的rpm文件来安装git-lfs,如下。

wget -O git-lfs-3.1.2-1.x86_64.rpm https://packagecloud.io/github/git-lfs/packages/fedora/35/git-lfs-3.1.2-1.x86_64.rpm/download.rpm
sudo yum install git-lfs-3.1.2-1.x86_64.rpm -y

2.4 安装交叉编译工具arm-none-eabi-gcc

下载、解压、加入环境变量配置文件,可以根据需要变更交叉编译工具的版本,此处使用的是gcc-arm-none-eabi-9-2020-q2。

wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2

mkdir /home/tools/gcc-arm-none-eabi-9-2020-q2
tar xvf gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2 -C /home/tools/gcc-arm-none-eabi-9-2020-q2
sed -i '$aexport PATH=/home/tools/gcc-arm-none-eabi-9-2020-q2/gcc-arm-none-eabi-9-2020-q2-update/bin:$PATH' ~/.bashrc 
source ~/.bashrc 

2.5 安装Python

我们从源码安装Python,需要先安装openssl-devel软件包,否则可能会报“pip is configured with locations that require TLS/SSL, however the…”的错误。从华为云镜像下载Python源码压缩包,解压,配置、编译安装,然后创建软连接文件/usr/local/bin/python、/usr/local/bin/pip。

sudo yum install openssl-devel
wget https://repo.huaweicloud.com/python/3.9.9/Python-3.9.9.tgz
tar -zvf Python-3.9.9.tgz
cd Python-3.9.9
./configure --with-ssl -enable-optimizations
make -j
sudo make install
sudo ln -s /usr/local/bin/python3.9 /usr/local/bin/python
sudo ln -s /usr/local/bin/pip3 /usr/local/bin/pip

安装完毕配置下pypi镜像,创建文件~/.pip/pip.conf,打开vi编辑器。

mkdir ~/.pip/
vi ~/.pip/pip.conf

输入如下内容:

[global]
index-url = https://repo.huaweicloud.com/repository/pypi/simple
trusted-host = repo.huaweicloud.com
timeout = 120

根据提示,可以升级下pip版本:

/usr/local/bin/python3 -m pip install --upgrade pip

2.6 安装ccache

执行下述命令可以完成安装ccache,非最新版本。最新版本可以访问https://github.com/ccache/ccache/blob/master/doc/INSTALL.md,由于需要CMake、C++ 14,对编译环境要求较高,我们使用次新版本ccache-3.6,已经可以满足要求。

wget https://www.samba.org/ftp/ccache/ccache-3.6.tar.xz
tar xvf ccache-3.6.tar.xz
mkdir ../build-ccache
cd ../build-ccache
../ccache-3.6/configure 
# CFLAGS和CPPFLAGS修改参数: 
CFLAGS = -g -O3 -Wall -W -march=native
CPPFLAGS = -g -O3 -Wall -W -march=native
make -j`getconf _NPROCESSORS_ONLN`
sudo make install 

3、下载OpenHarmony代码

3.1 配置git和ssh key

执行下述命令,设置git用户和提交邮箱。

git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store

然后访问https://gitee.com/profile/sshkeys,设置SSH信息。使用下述命令生成SSH Key信息,然后复制到网页即可。

ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"  
cat ~/.ssh/id_ed25519.pub

添加SSH Key后,在终端(Terminal)中输入:

ssh -T git@gitee.com

首次使用需要确认并添加主机到本机SSH可信列表。若返回 Hi XXX! You’ve successfully authenticated, but Gitee.com does not provide shell access. 内容,则证明添加成功。

3.2 安装码云repo工具

安装码云repo工具,执行下述命令即可。

curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > repo
sudo mv repo /usr/local/bin/repo
chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests

3.3 获取代码

获取源码代码的目录如下。

mkdir openharmony

cd openharmony

repo init -u https://gitee.com/openharmony-sig/manifest.git -m devboard_asrmicro.xml --no-repo-verify

repo sync -c

repo forall -c 'git lfs pull'

4、 编译OpenHarmony

以openharmony/vendor/bestechnic/display_demo为例进行编译。成功编译后,输入如下:

小结

本文先介绍了如何在openEuler WSL版本上安装必备的软件包,工具软件,然后下载OpenHarmony源代码并成功进行编译,感兴趣的可以自行尝试。

如果大家想更加深入的学习 OpenHarmony 开发的内容,不妨可以参考以下相关学习文档进行学习,助你快速提升自己:

OpenHarmony 开发环境搭建:https://qr18.cn/CgxrRy

《OpenHarmony源码解析》:https://qr18.cn/CgxrRy

  • 搭建开发环境
  • Windows 开发环境的搭建
  • Ubuntu 开发环境搭建
  • Linux 与 Windows 之间的文件共享
  • ……

系统架构分析:https://qr18.cn/CgxrRy

  • 构建子系统
  • 启动流程
  • 子系统
  • 分布式任务调度子系统
  • 分布式通信子系统
  • 驱动子系统
  • ……

OpenHarmony 设备开发学习手册:https://qr18.cn/CgxrRy

在这里插入图片描述

OpenHarmony面试题(内含参考答案):https://qr18.cn/CgxrRy

写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新学习资源,请移步前往小编:https://qr21.cn/FV7h05

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

掌控未来:用决策树算法揭秘胜利者的必胜策略!

掌控未来:用决策树算法揭秘胜利者的必胜策略! 一、引言1.1. 决策树的定义1.2. 发展历程1.3. 当前应用概况1.4. 本文内容安排 二、决策树的基本概念2.1 节点和叶节点2.2 决策树的结构结构图示不同结构的决策树 三、决策树的算法原理3.1 基本思想3.2 核心算…

设计灵感源泉!7个令人赞叹的网页界面设计展示

网页的界面设计主要是指视觉设计和风格设计。高质量的界面更容易吸引用户的注意力,从而更准确地向用户传达信息。对于设计师来说,他们需要从高质量的作品中获得稳定的灵感,以帮助他们更高效地实现设计目标。在本文中,梳理了7个高质…

黄金价格与美元的关系变了?

在一些传统的定价框架中,现货黄金的价格走势取,决于美元的实际利率水平——实际利率越高,黄金价格越低,反之亦然。在大多数的时候,美元的实际利率决定了美元指数的高低所以人们通常认为,现货金价与美元呈反…

猫头虎推荐20个值得体验的通用大模型

猫头虎推荐20个值得体验的通用大模型 🚀 大家好,我是猫头虎,一名专注于科技领域的自媒体博主。今天是周一,新的开始,我们来深入探讨一下当前最值得体验的通用大模型。这些AI模型不仅功能强大,而且在各自领…

10.无代码爬虫软件做网页数据抓取流程——工作流程设置与数据预览

首先,多数情况下免费版本的功能,已经可以满足绝大多数采集需求,想了解八爪鱼采集器版本区别的详情,请访问这篇帖子:https://blog.csdn.net/cctv1123/article/details/139581468 八爪鱼采集器免费版和个人版、团队版下…

LLaMA Factory多卡微调的实战教程(持续更新)

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

利用Python语言调用讯飞星火认知大模型接口实战指南

什么是API接口 API(应用程序编程接口)是一组规则,允许不同的软件系统相互通信。通过API,开发者可以访问外部系统的功能和数据,而无需了解其内部实现。 API接口就像一座桥梁,连接应用程序和服务。例如&…

自动化产线设备联网,协同打造5G智慧工厂

1、需求背景 随着信息技术、物联网、人工智能等领域的飞速发展,智慧工厂成为制造业升级和转型的关键方向。在智慧工厂中,产线设备之间的实时通信和协同操作可以提高整个生产流程的自动化水平。 提升生产效率 通过稳定的网络连接,保证设备之…

Python工具箱系列(五十三)

​​水印 水印是一种常见的图片处理需求。当既需要展示,又需要保护知识产权时,就需要使用文字或者图片来打水印。下面的代码展示了文字水印与图片水印的过程。 ​--javascripttypescriptbashsqljsonhtmlcssccppjavarubypythongorustmarkdown from pat…

MySQL数据库初识

目录 一.数据库相关概述 1.数据库概念 数据(Data) 表 数据库(database) 数据库管理系统(DBMS) 数据库系统 2.数据库系统发展史 3.数据库分类 3.1.关系数据库 3.2.非关系型数据库 二.MySQL数据库…

vue分页

先看效果 再看代码 <!-- 分页 --><div v-if"pageParams.pageCount > 1" class"flex justify-end mt-6"><n-paginationv-model:page"pageParams.page" v-model:page-size"pageParams.pageSize" :page-count"pa…

【代码随想录】【算法训练营】【第41天】 [416]分割等和子集

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 40&#xff0c;休息&#xff0c;休息一下~ day 41&#xff0c;艰难的周一~ 题目详情 [416] 分割等和子集 题目描述 416 分割等和子集 解题思路 前提&#xff1a;是否可以将数组分为和相等的…

android中的JNI的DEMO

一&#xff1a;源代码 native-lib.cpp #include "native-lib.h"JNIEXPORT jint JNICALL Java_com_example_jnidemo_MainActivity_add(JNIEnv* env, jobject, jint a, jint b) {return a b; }JNIEXPORT jint JNICALL Java_com_example_jnidemo_MainActivity_subtra…

DBeaver连接数据库

1、空白处右键点击 2、创建-连接 3、选择不同的数据库 4、修改信息 (mac)双击&#xff0c;连接&#xff0c;根据自己的需求重命名

VBA学习(2):Excel VBA初学者编写第一个宏

要在Excel中编写宏程序&#xff0c;首先需要了解VBA语言&#xff0c;而快速入门的技巧就是使用宏录制器。 宏录制器就像一台录音机&#xff0c;可以使用VBA监听和记录你在Excel中所做的一切操作。对于初学者来说&#xff0c;你可能不了解VBA&#xff0c;这里&#xff0c;我们会…

抖音用户新作品监控助手,第一时间获取博主作品信息。

声明&#xff1a; 本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。包含关注&#xff0c;点赞等 抖音新作品监控助手系统是一个功能强大的…

ChatGPT-4o赋能科研:自然科学研究的新篇章

自然科学研究遵循严谨的科学方法论&#xff0c;包括文献调研、问题综述、试验设计、提出假设、数据清洗、统计诊断、大数据分析、经典统计模型&#xff08;回归模型、混合效应模型、结构方程模型、Meta分析模型&#xff09;、参数优化、机器/深度学习、大尺度模型构建与模拟、论…

持PMP证书可以免考申请CSPM-2国标证书!

一提到项目管理的专业认证&#xff0c;大家首先想到的肯定是以PMP为核心的PMI体系认证。当然也有BSI和IPMP等其他体系认证&#xff0c;但都是从国外引进的专业认证&#xff0c;我国始终缺少符合中国特色项目管理环境下的项目管理专业认证体系。 如今&#xff0c;更符合中国国情…

单细胞|RNA-seq ATAC-seq 联合分析

引言 本文[1]将介绍如何利用Signac和Seurat这两个工具&#xff0c;对一个同时记录了DNA可接触性和基因表达的单细胞数据集进行综合分析。我们将以一个公开的10x Genomics Multiome数据集为例&#xff0c;该数据集针对的是人体的外周血单核细胞。 数据准备 library(Signac)libra…

八股文之JVM

目录 1.JVM内存划分 2.JVM类加载过程 3.JVM垃圾回收机制GC 3.1.判断谁是垃圾 3.2.如何释放对应的内存 1.JVM内存划分 在一个Java程序运行起来之后&#xff0c;jvm就会从操作系统中申请一块内存&#xff0c;然后就会将该内存划分成多个部分&#xff0c;用于不同的用途。 …