鸿蒙OpenHarmony

news2024/11/24 8:25:37

开源鸿蒙系统编译指南

  • 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.coloradmin.cn/o/2185975.html

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

相关文章

生信初学者教程(二十四):筛选交集特征

文章目录 介绍加载R包导入数据重叠的重要特征重要特征的韦恩图输出结果总结介绍 在数据分析和机器学习项目中,特征选择是一个至关重要的步骤,它有助于识别数据集中与目标变量最相关的特征。当通过不同的机器学习方法筛选出重要特征时,对这些特征取交集以识别核心特征,是一种…

【重学 MySQL】五十、添加数据

【重学 MySQL】五十、添加数据 使用INSERT INTO语句添加数据基本语法示例插入多行数据注意事项 使用LOAD DATA INFILE语句批量添加数据其他插入数据的方式注意事项 在MySQL中,添加数据是数据库操作中的基本操作之一。 使用INSERT INTO语句添加数据 使用 INSERT IN…

资源《Arduino UNO R3 proteus 仿真工程》说明。

资源链接: Arduino UNO R3 proteus 仿真工程 1.文件明细: 2.文件内容说明 包含:AD工程、原理图、PCB。 3.内容展示 4.简述 该文件为proteus工程,用于Arduino uno r3仿真。 因为软件自动运行,所以最小系统上没有…

全网最适合入门的面向对象编程教程:55 Python字符串与序列化-字节序列类型和可变字节字符串

全网最适合入门的面向对象编程教程:55 Python 字符串与序列化-字节序列类型和可变字节字符串 摘要: 在 Python 中,字符编码是将字符映射为字节的过程,而字节序列(bytes)则是存储这些字节的实际数据结构&am…

论文笔记:iCaRL: Incremental Classifier and Representation Learning

1. Contribution 提出了一种新的训练策略,iCaRL:允许以增量方式学习:只需要同时存在一小部分类别的训练数据,新类别可以逐步添加。同时学习分类器和数据表示:iCaRL能够同时学习强大的分类器和数据表示,这与…

OpenGL ES MVP/变换投影矩阵(8)

OpenGL ES MVP/变换投影矩阵(8) 简述 通过前面几节的学习,目前我们已经可以渲染自己想要的图像,也可以通过纹理加载图片进行渲染。接下来我们来学习一下MVP,这里的MVP不是Android应用开发里的框架MVP,而是Model,View…

电场能量磁场能量相等,注意电场能量公式也没有复数形式(和坡印廷类似)

下面是电场能量密度和磁场能量密度的公式,注意这可不是坡印廷定理。且电场能量密度没有复数表达式,即不是把E和D换成复数形式就行的。注意,一个矢量可以转化为复数形式,两个矢量做运算不能转化为两个复数形式的矢量做运算&#xf…

什么是SPI机制

什么是SPI机制 SPI机制是Java平台提供的一种强大的动态扩展机制,能够让程序在运行时灵活地加载和使用服务提供者的实现类。我们这里带大家简单的了解一下SPI机制是如何工作的 SPI(Service Provider Interface,服务提供者接口)机制…

JavaScript while循环语句

While语句包括一个循环条件和一段代码块&#xff0c;只要条件为真&#xff0c;就不断循环执行代码块。 while(条件){语句;} var i0;while(i<100){console.log(i);i1;} 注意&#xff1a;所有的for循环都可以改写为while循环

Spring Boot 和 MyBatis-Plus凑一块儿了,这份教程你得看

一、引言 MyBatis-Plus 是 MyBatis 的增强版&#xff0c;提供了 CRUD 接口、分页插件、性能分析插件等特性&#xff0c;简化了开发过程。本文将详细介绍如何在 Spring Boot 项目中集成 MyBatis-Plus。 支持的数据看也越来越多&#xff0c;值得去搞一下&#xff0c;写了一个小例…

《PMI-PBA认证与商业分析实战精析》第5章 需求启发与分析

第5章 需求启发与分析 本章主要内容&#xff1a; 需求启发 需求分析 模型化与优化需求 记录、确认、核实和批准需求 本章涵盖的考试重点&#xff1a; 需求启发的四项活动 需求启发的八项技术 启发提问的四种类型问题 启发原型的类型 访谈的四种分类 观察技术的四种类…

华三资源

华三华三官方网站华三公司官网新华三 - 融绘数字未来&#xff0c;共享美好生活华三华三文档中心华三文档资源文档中心-新华三集团-H3C华三华三 ICT百科华三 ICT知识百科H3C ICT知识百科-新华三集团-H3C华三华三文档高级查找高级文档搜索新华三 - 融绘数字未来&#xff0c;共享美…

已解决:Could not find artifact xxx

已解决&#xff1a;Could not find artifact xxx 文章目录 写在前面问题描述报错原因分析 解决思路解决办法1. 检查依赖声明的正确性2. 检查远程仓库配置3. 检查网络连接4. 清理本地缓存并强制更新5. 手动上传依赖到私有仓库6. 检查本地仓库是否已被损坏 总结 写在前面 在使用…

V2V迁移:vsphere至openstack

预检查 检测待迁移实例是否已安装并配置virtio相关的块设备驱动、网卡驱动&#xff0c;linux包括kernel、initramfs&#xff0c;windows包括磁盘控制器、网卡。 Linux 系统检查 Virtio 驱动 Windows 系统检查 Virtio 驱动 环境 1、下载安装ovftool 2、安装qemu-kvm&#x…

数据结构-二叉树介绍及其在Java中遍历算法实现

一、二叉树介绍 1、二叉树(Binary tree)的定义 二叉树(binary tree)是树形结构的一个重要类型,是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右…

Angular基础学习(入门 --> 入坑)

目录 一、Angular 环境搭建 二、创建Angular新项目 三、数据绑定 四、ngFor循环、ngIf、ngSwitch、[ngClass]、[ngStyle]、管道、事件、双向数据绑定--MVVM 五、DOM 操作 &#xff08;ViewChild&#xff09; 六、组件通讯 七、生命周期 八、Rxjs 异步数据流 九、Http …

SuperMap iClient for MapLibreGL 根据SQL条件过滤显示动态图层

查阅发现iClient 有子图层控制类 LayerStatus 可实现&#xff1a;子图层显示参数类。此类存储了各个子图层的名称、是否可见的状态、SQL 过滤条件等参数。 API详情&#xff1a;http://support.supermap.com.cn:8090/iserver/iClient/forJavaScript/docs/maplibregl/LayerStatus…

java_整型

1.整数类型 2.整型细节 Java各整数类型有固定的范围和字段长度&#xff0c;不受具体OS【操作系统】的影响&#xff0c;以保证Java程序的可移植性 Java的整型常量&#xff08;具体值&#xff09;默认为int型&#xff0c;声明long型常量后需加"l"或"L" pu…

计算机网络:计算机网络体系结构 —— OSI 模型 与 TCP/IP 模型

文章目录 计算机网络体系结构OSI 参考模型TCP/IP 参考模型分层的必要性物理层的主要问题数据链路层的主要问题网络层的主要问题运输层的主要问题应用层的主要问题 分层思想的处理方法发送请求路由器转发接受请求发送响应接收响应 计算机网络体系结构 计算机网络体系结构是指将…

一文说完c++全部基础知识,IO流(二)

一、IO流 流、一连串连续不断的数据集合。 看下图&#xff0c;继承关系 using namespace 流类的构造函数 eg:ifstream::ifstream (const char* szFileName, int mode ios::in, int); #include <iostream> #include <fstream> using namespace std; int main()…