鸿蒙OpenHarmony

开源鸿蒙系统编译指南

  • Ubuntu编译环境配置
    • 第一步:Shell 改 Bash
    • 第二步:安装Git和安装pip3工具
    • 第三步:远程仓配置
    • 第四步:拉取代码
    • 第五步:安装编译环境
    • 第六步:本地编译源码
  • Windows开发环境配置
    • 第一步:在Ubuntu编译环境上安装SSH服务
    • 第二步:在Windows开发环境上安装Remote SSH客户端
    • 第三步:开发环境远程连接编译环境

使用Ubuntu的编译环境对OpenHarmony鸿蒙源码进行编译,在Windows环境中将编译出来的固件烧录到开发板上。

在这里插入图片描述

Ubuntu编译环境配置

Ubuntu环境实际使用环境:
Ubuntu 22.04.4 LTS
内存:64G
另外,用的CPU E5-2697 v2@2.70GHz*24,编译完成不到1个小时吧

第一步:Shell 改 Bash

1、在Ubuntu的终端窗口中执行sudo dpkg-reconfigure dash,出现如下页面:
在这里插入图片描述
2、在页面中使用方向按键选择"否"或No,回车确认会自动退出。

第二步:安装Git和安装pip3工具

Git是版本控制工具,pip3是python的包管理工具
1、安装Git

sudo apt install git git-lfs python3-pip curl

2、安装pip3

mkdir ~/.pip
pip3 config set global.index-url https://mirrors.huaweicloud.com/repository/pypi/simple
pip3 config set global.trusted-host mirrors.huaweicloud.com
pip3 config set global.timeout 120

第三步:远程仓配置

鸿蒙的源码放在码云服务器上,需要先申请码云gitee的自有账号,这里只介绍部分过程。
1、SSH 公钥设置
根据官网指导文档生成SSH公钥,再设置账户SSH公钥。
这里需要注意的是测试SSH环境时,再Linux终端中,首次执行 ssh -T git@gitee.com 时,出现如下结果,直接输入yes跳过。
在这里插入图片描述
再次执行 ssh -T git@gitee.com,才会出现和gitee官网相同的结果,这一点官方可能是选择性忽略,或许没有自测到此场景。
2、配置git的用户信息

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

3、下载安装码云的repo工具,安装在 ~/bin 或其他路径下:

mkdir ~/bin
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o ~/bin/repo 
chmod a+x ~/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests

4、配置repo环境变量
在终端中执行 vim ~/.bashrc 命令编辑环境变量,在环境变量文件的最后一行添加repo的安装路径:

export PATH=~/bin:$PATH  # 这里的repo在~/bin下安装,也可以安装在其他路径下

执行 source ~/.bashrc 使该环境变量生效。

第四步:拉取代码

1、在新建的空文件夹中,准备拉取源码。这里下载到了 /xxx/openharmony4.0

mkdir /xxx/openharmony4.0

2、拉取源码

cd /xxx/openharmony4.0          # 1.进入到新建的文件下
repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify    # 2.初始化仓库
repo sync -c     # 3.开始同步代码

获取鸿蒙代码结束后,如下文件列表:
在这里插入图片描述

第五步:安装编译环境

1、通过以下步骤安装编译OpenHarmony需要的库和工具。

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 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

说明:
(1)若使用Ubuntu20及以上版本,由于gcc-multilib和gcc-arm-linux-gnueabi互斥,请勿安装gcc-arm-linux-gnueabi,直接执行上述命令即可。
(2)若使用Ubuntu18.04,需要继续执行 sudo apt-get install gcc-arm-linux-gnueabi

  • Python要求安装Python 3.8及以上版本,此处以Python 3.8为例。
  • Java要求java8及以上版本,此处以java8为例。

2、设置默认python版本
查看Python 3.8的安装路径 which python3.8,这里的路径是 /usr/bin/python3.8

# 设置默认Python解释器
sudo update-alternatives --install /usr/bin/python python {默认Python路径} 1
sudo update-alternatives --install /usr/bin/python3 python3 {默认Python路径} 1
# 例如:
# sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
# sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1

第六步:本地编译源码

1、在源码根目录下执行prebuilts脚本
bash build/prebuilts_download.sh
在这里插入图片描述
2、开始编译源码
指定编译类型为rk3568,编译结果文件及编译日志文件获取路径:out/rk3568
sudo ./build.sh --product-name rk3568 --ccache
不指定类型,直接编译源码,编译结果文件在 out/sdk/ohos-sdk文件夹里
sudo ./build.sh --product-name ohos-sdk

Windows开发环境配置

一般情况下,大多数人都会在Windows环境下开发调试烧录,这就需要Windows和Ubuntu交互和传输文件,这就需要配置远程访问环境。

第一步:在Ubuntu编译环境上安装SSH服务

一般情况下,只要用其他远程(MobaXterm)工具能通过SSH服务登录,就可以忽略不执行此步骤。
在Ubuntu系统中,打开终端工具,执行如下命令安装SSH服务并启动。

sudo apt-get install openssh-server   # 安装openssh-server
sudo systemctl start ssh      # 启动SSH服务

第二步:在Windows开发环境上安装Remote SSH客户端

打开Windows系统下的Visual Studio Code工具,点击插件管理模块,在插件市场的搜索并安装“remote-ssh”插件。
在这里插入图片描述

第三步:开发环境远程连接编译环境

1、打开Remote Explorer。
2、新建远程连接。
3、输入“ssh user@host-or-ip”或者"user@domain@host-or-ip"后回车确认。其中host-or-ip为要连接的远程计算机的IP地址或者host名称,user为登录远程计算机的帐号。注意:这里的user和host-or-ip均是编译环境已经配置过的账号。
在这里插入图片描述
4、在弹出的输入框中,选择SSH configuration文件,选择默认的第一选项即可。
在这里插入图片描述
5、根据自己的习惯选择两种链接方式之一
在这里插入图片描述
6、在弹出的输入框中,根据远程环境的类型,选择Linux/Windows/MacOs,然后输入登录远程计算机的user的密码,确认回车开始连接远程计算机。
在这里插入图片描述
这是成功连接的正常状态。
在这里插入图片描述
7、如图找到远程环境中的源码后,点击"OK" ,可以打开远程源码进行编辑调试。
在这里插入图片描述

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

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

相关文章

巧用armbian定时任务控制开发板LED的亮灭

新买了个瑞莎 3E 开发板,号称最小SBC,到了之后简直玩开了花,各种折腾后 安装好armbian系统,各种调优。 不太满意的地方:由于板子太小的原因,导致两个USBTYPEC的接口距离很近,所以买的OTG转接口如果有点宽的话 会显得特别拥挤。 还有就是每天晚上天黑了之后,卧室…

Uniapp API

1.uni.showToast 显示消息提示框 unishowToast({ obj参数 }) 2.uni.showLoading 显示 loading 提示框, 需主动调用 uni.hideLoading 才能关闭提示框。 3.uni.showModal 显示模态弹窗,可以只有一个确定按钮,也可以同时有确定和取消按钮。类似于一个A…

躺平成长:微信小程序运营日记第二天

在进行属于生活的开源之后,自己更加感受到自己存在的渺茫,同时更加开始深刻领会,开源的重要性,在开源,开放,创造,再创新的思维模式下,不发布八部金刚功相关的训练视频,自…

基于Node2Vec的图嵌入实现过程

目录 一、引言二、Node2Vec(原理)2.1 随机游走(Random Walk)2.2 嵌入学习2.3 Node2Vec 的优势 三、使用 Node2Vec 进行图嵌入(实践)3.1 读取和转换 JSON 文件为 Graph 对象3.2 训练 Node2Vec 模型3.3 二维嵌…

MySQL--三大范式(超详解)

目录 一、前言二、三大范式2.1概念2.2第一范式(1NF)2.3第二范式(2NF)2.3第三范式(3NF) 一、前言 欢迎大家来到权权的博客~欢迎大家对我的博客进行指导,有什么不对的地方,我会及时改进…

使用前端三剑客实现一个备忘录

一,界面介绍 这个备忘录的界面效果如下: 可以实现任务的增删,并且在任务被勾选后会被放到已完成的下面。 示例: (1),增加一个任务 (2),勾选任务 &#xff…

影视cms泛目录用什么程序?苹果cms二次开发泛目录插件

影视CMS泛目录一般使用的程序有很多种,(maccmscn)以下是其中几种常见的程序: WordPress:WordPress是一个非常流行的开源内容管理系统,可以通过安装一些插件来实现影视CMS泛目录功能。其中,一款常…

Linux中的进程间通信之共享内存

共享内存 共享内存示意图 共享内存数据结构 struct shmid_ds {struct ipc_perm shm_perm; /* operation perms */int shm_segsz; /* size of segment (bytes) */__kernel_time_t shm_atime; /* last attach time */__kernel_time_t shm_dtime; /* last detach time */__kerne…

招联2025校招内推倒计时

【投递方式】 直接扫下方二维码,或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus,使用内推码 igcefb 投递) 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策…

制作离线版Koczkatamas工具包

一、下载源码 从https://github.com/koczkatamas/koczkatamas.github.io下载koczkatamas.github.io-master.zip 二、解压 $ unzip koczkatamas.github.io-master.zip三、运行index.html 可以看到输入一个字符后,下面的各种编码都没有显示,则表示运行…

力扣刷题 | 两数之和

目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 给定一个整数数组 nums 和…

UOM无人机空域快速申请技术详解

UOM无人机空域快速申请技术详解主要包括以下几个步骤: 一、准备阶段 1. 实名登记:首先,您需要在相应的民航部门进行无人机的实名登记,这是合法飞行的前提。 2. 了解规定:熟悉并遵守当地关于无人机飞行的法律法规&am…

【微服务】初识(day1)

基础概念 集群 集群是将一个系统完整的部署到多个服务器,每个服务器提供系统的所有服务,多个服务器可以通过负载均衡完成任务,每个服务器都可以称为集群的节点。 分布式 分布式是将一个系统拆分为多个子系统,多个子系统部署在…

YOLO--前置基础词-学习总结

RFBNet是什么意思 RFBNet 是一种用于目标检测的深度学习网络,它的名字来源于 "Receptive Field Block Network"(感受野块网络)。简单来说,RFBNet 是一种可以让计算机更好地“看”图像中不同大小的物体的方法。 在图像处…

【重学 MySQL】五十四、整型数据类型

【重学 MySQL】五十四、整型数据类型 整型类型TINYINTSMALLINTMEDIUMINTINT(或INTEGER)BIGINT 可选属性UNSIGNEDZEROFILL显示宽度(M)AUTO_INCREMENT注意事项 适合场景TINYINTSMALLINTMEDIUMINTINT(或INTEGER&#xff0…

tftp传文件被服务器拒绝进入tftp: server error: (768) Access to staonline.pcap denied

环境:测试一个ac下挂ap,ap下的抓包文件传出时,出现问题: ac的wan口ip是192.168.186.167/24,gw是192.168.186.1,下挂ap的ip是192.168.202.199/24,ac上开子接口192.168.202.1/24,ac上开…

C++ | Leetcode C++题解之第456题132模式

题目&#xff1a; 题解&#xff1a; class Solution { public:bool find132pattern(vector<int>& nums) {int n nums.size();vector<int> candidate_i {nums[0]};vector<int> candidate_j {nums[0]};for (int k 1; k < n; k) {auto it_i upper_…

微服务获取用户信息和OpenFeign传递用户

问题一&#xff1a; 网关已经完成登录校验并获取登录用户身份信息。但是当网关将请求转发到微服务时&#xff0c;微服务又该如何获取用户身份呢&#xff1f; 由于网关发送请求到微服务依然采用的是Http请求&#xff0c;因此我们可以将用户信息以请求头的方式传递到下游微服务…

PC端微信小程序如何调试?

向往常一样运行开微信小程序开发者工具 如果只弹出pc端小程序&#xff0c;没有出现调试的界面&#xff1a;点击胶囊按钮的三个…选择重新进入小程序 即可依次展开相应的功能调试&#xff0c;改完代码没反应再刷新看看&#xff0c;再没反应就再次重新点击编译并自动调试。

论文 | Model-tuning Via Prompts Makes NLP Models Adversarially Robust

这篇论文研究了使用提示 (Prompting) 方法微调预训练语言模型&#xff0c;以提高其在对抗样本攻击下的鲁棒性。论文的主要贡献如下&#xff1a; 1.MVP 比 MLP-FT 更鲁棒&#xff1a; 论文比较了 MVP (Model-tuning Via Prompts) 和传统的 MLP-FT (Fine-tuning with an MLP head…