OpenHarmony 实战开发——南向统一编译的docker镜像来了

由于我自己的南向设备开发平台的需求,我将当前几个不同的 docker 镜像版本进行了整合,经过一段时间的攻关和验证,目前整合已完成,新版本的 Dockerfile 如下,这个不是公共需求,所以没有提交主干,存这里备个案,需要的伙伴自行使用。使用方法如下:

1。 在 Dockerfile 所在目录执行如下命令生成镜像

docker build -t oh_compile:v1 . 

2。 使用 docker images 查看 oh_compile:v1 是否成功构建

Docker镜像简介

本文为OpenHarmony的Docker编译环境使用指导。

OpenHarmony的Docker镜像托管在HUAWEI Cloud SWR上,开发者可以通过该镜像在很大程度上简化编译前的环境配置。 目前容器化构建选项支持情况如下:

Docker镜像仓库标签说明
swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker1.0.0已经预安装OpenHarmony版本的编译环境。

使用方式及步骤

开发者在下载好源码后,可以通过以下步骤来使用我们提供的Docker环境。详情请参见Docker编译环境。

  1. 获取Docker镜像
     docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
  1. 进入OpenHarmony代码根目录执行如下命令,从而进入Docker构建环境
     docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
  1. 通过如下命令启动不同平台的编译
     hb set #在显示的页面中通过键盘上下键选择需要编译的平台,通过回车确定选择。hb build -f #执行编译。

本次整合后的完整 Dockerfile 如下,我额外调整了一下 WORKDIR 为 /root, 你们可以恢复成/home/openharmony

FROM ubuntu:20.04WORKDIR /rootARG DEBIAN_FRONTEND=noninteractiveRUN TZ=Asia/Shanghai && sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list  \&& sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list  \&& apt-get update -y  \&& apt-get install -y locales default-jre default-jdk libelf-dev bc rsync mtools dosfstools \wget curl ssh vim ccache libxi-dev libxrandr-dev libxcursor-dev libxinerama-dev libpixman-1-dev \qemu gcc-arm-none-eabi xsltproc lib32z1-dev libgl1-mesa-dev libx11-dev libxml2-dev kmod \libssl-dev openssl scons python3.8 mtd-utils binutils libglib2.0-dev genext2fs apt-utils gnupg \zlib1g-dev m4 u-boot-tools build-essential unzip make libc6-dev-i386 x11proto-core-dev g++ \libncurses5 libtinfo5 git-lfs gcc cpio perl ruby flex bison python3-pip zip git gperf \doxygen liblz4-tool  python3.8-distutils libffi-dev zlib* e2fsprogs device-tree-compiler \git-core libdwarf-dev lib32ncurses5-dev gnutls-bin gcc-arm-linux-gnueabi  \binutils-dev grsync xxd jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils \quota ppp libtinfo-dev libncurses5-dev libncursesw5 libstdc++6 \&& wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/gcc-arm-none-eabi/10.3/linux/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 \&& wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/hc-gen/0.65/linux/hc-gen-0.65-linux.tar \&& wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz \&& wget -P /home/tools https://mirrors.huaweicloud.com/nodejs/v14.19.1/node-v14.19.1-linux-x64.tar.xz \&& wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.10.1/linux/ninja-linux-x86-1.10.1.tar.gz  \&& wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/gn/2021/linux/gn-linux-x86-2021.tar.gz  \&& wget -P /home/tools https://repo.huaweicloud.com/harmonyos/compiler/clang/12.0.1-36cd05/linux/clang_linux-x86_64-36cd05-20221030.tar.bz2  \&& wget -P /home/tools https://hm-verify.obs.cn-north-4.myhuaweicloud.com/qemu-5.2.0.tar.xz \&& locale-gen "en_US.UTF-8"  \&& rm -rf /bin/sh /usr/bin/python /usr/bin/python3  \&& mkdir -p /home/tools/gn  \&& mkdir -p /home/tools/ninja  \&& ln -s /bin/bash /bin/sh  \&& ln -s /usr/bin/python3.8 /usr/bin/python3  \&& ln -s /usr/bin/python3.8 /usr/bin/python \&& pip3 install --trusted-host https://repo.huaweicloud.com \-i https://repo.huaweicloud.com/repository/pypi/simple \pycryptodome ecdsa redis kconfiglib setuptools requests ohos-build \pymongo  pyyaml prompt_toolkit==1.0.14 json2html yagmail python-jenkins  \&& tar -xvf /home/tools/hc-gen-0.65-linux.tar -C /home/tools \&& tar -xvf /home/tools/gcc_riscv32-linux-7.3.0.tar.gz -C /home/tools \&& tar -xvf /home/tools/clang_linux-x86_64-36cd05-20221030.tar.bz2 -C /home/tools  \&& tar -xvf /home/tools/ninja-linux-x86-1.10.1.tar.gz -C /home/tools/ninja  \&& tar -xvf /home/tools/gn-linux-x86-2021.tar.gz -C /home/tools/gn  \&& tar -xJf /home/tools/node-v14.19.1-linux-x64.tar.xz -C /home/tools  \&& tar -jxvf /home/tools/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 -C /home/tools \&& tar -xJf /home/tools/qemu-5.2.0.tar.xz -C /home/tools  \&& cp /home/tools/node-v14.19.1-linux-x64/bin/node /usr/local/bin  \&& ln -s /home/tools/node-v14.19.1-linux-x64/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm  \&& ln -s /home/tools/node-v14.19.1-linux-x64/lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx  \&& sed -i '$aexport PATH=/home/tools/hc-gen:$PATH' /root/.bashrc  \&& sed -i '$aexport PATH=/home/tools/gcc_riscv32/bin:$PATH' /root/.bashrc \&& sed -i '$aexport PATH=/home/tools/gcc-arm-none-eabi-10.3-2021.10/bin:$PATH' /root/.bashrc \&& sed -i '$aexport PATH=/home/tools/clang_linux-x86_64-36cd05-20221030/bin:$PATH' /root/.bashrc \&& sed -i '$aexport PATH=/home/tools/ninja:$PATH' /root/.bashrc  \&& sed -i '$aexport PATH=/home/tools/gn:$PATH' /root/.bashrc  \&& sed -i '$aexport PATH=/home/tools/node-v14.19.1-linux-x64/bin:$PATH' /root/.bashrc  \&& sed -i '$aexport PATH=/root/.local/bin:$PATH' /root/.bashrc \&& export PATH=/home/tools/hc-gen:$PATH  \&& export PATH=/home/tools/gcc_riscv32/bin:$PATH \&& export PATH=/home/tools/gcc-arm-none-eabi-10.3-2021.10/bin:$PATH \&& export PATH=/home/tools/clang_linux-x86_64-36cd05-20221030/bin:$PATH  \&& export PATH=/home/tools/ninja:$PATH  \&& export PATH=/home/tools/gn:$PATH  \&& export PATH=/home/tools/node-v14.19.1-linux-x64/bin:$PATH  \&& export PATH=/root/.local/bin:$PATH  \&& cd /home/tools/qemu-5.2.0  \&& mkdir build  && cd build  \&& ../configure --target-list=arm-softmmu  \&& make -j  \&& make install \&& cd /root     \&& rm -rf /home/tools/*.xz  \&& rm -rf /home/tools/*.gz  \&& rm -rf /home/tools/*.tar  \&& rm -rf /home/tools/*.bz2 \&& rm -rf /home/tools/qemu-5.2.0 \&& npm install -g @ohos/hpm-cli --registry https://mirrors.huaweicloud.com/repository/npm/ \&& pip3 install ohos-buildENV LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LC_ALL=en_US.UTF-8 TZ=Asia/ShanghaiCMD ["/bin/bash"]

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

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

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

相关文章

Web APIs 学习归纳8---移动端特效

上一节学习了PC端的特效,现在学习移动端的特效。 一、移动端触屏事件 1.1 触屏事件概述 移动端浏览器兼容性较好,我们不需要考虑以前 JS 的兼容性问题,可以放心的使用原生 JS 书写效果,但是移动 端也有自己独特的地方。比如触屏…

容联云孔淼:大模型落地与全域营销中台建设

近日,由金科创新社主办的2024区域性商业银行数智化转型研讨会顺利召开, 容联云产业数字云事业群副总经理、诸葛智能创始人孔淼受邀出席,并分享数智化转型实践经验。 他分享了容联云两大核心产品,“大模型应用容犀Copilot”在金融营…

TypeScript 基础学习笔记:interface 与 type 的异同

🔥 个人主页:空白诗 文章目录 TypeScript 学习笔记:interface 与 type 的异同🎣 引言🚀 快速入门1️⃣ Interface(接口)📋 定义🤝 实现💡 特点 2️⃣ Type Al…

Android 高版本实现沉浸式状态栏

目前实现的android高版本沉浸式状态栏分为两类: 1、是纯透明状态栏; 2、是纯透明状态栏,但是状态栏字体是黑色; 将状态栏的代码封装到BaseActivity中更方便使用: BaseActivity: public abstract class BaseActivit…

AI一键换装超强电商生产力工具下载

支持win版本,对电脑硬件有一定的要求。建议固态硬盘留足至少30 G的空间,显卡n卡显存至少4G。一些低端独立显卡可能还不如高配cpu集成。 程序文件比较大,因为涉及到大型模型。 下载链接在后面 下载链接: https://pan.baidu.com…

【Linux】如何定位客户端程序的问题

文章目录 1 客户端程序和服务端程序的差别2 问题类型2.1 崩溃(crash)2.2 CPU高2.3 内存高2.4 线程卡死 3 总结 1 客户端程序和服务端程序的差别 客户端程序是运行在终端上,通常都会与业务系统共存,而服务端程序通常会运行在单独的节点上,或者…

Shell编程之条件语句与case语句

目录 1.条件测试 1.1 文件测试 1.2 整数测试 1.3 字符串测试 1.4 逻辑测试 2.if语句 2.1 单分支if语句 2.2 双分支if语句 2.3 多分支if语句 3.case分支语句 1.条件测试 test命令 Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功…

找最大数字-第12届蓝桥杯国赛Python真题解析

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第60讲。 找最大数字&#…

你会拧螺丝吗?来看看如何拧紧螺丝?——SunTorque智能扭矩系统

智能扭矩系统-智能拧紧系统-扭矩自动控制系统-SunTorque 螺丝拧紧看似简单,却是一门需要技巧和耐心的技术活。很多人可能会认为,只要把螺丝旋进孔里,用力拧紧就可以了。但实际上,拧紧螺丝的过程远不止如此。在这篇文章中&#xf…

FPGA+DDR+SERDES+USB3.0单向传输机方案,数据只能单向传输,避免反向攻击,确保系统安全

FPGADDRSERDESUSB3.0方案,设备包含发送端接收端,物料上采用光纤通讯,数据只能单向传输,避免反向攻击,确保系统安全 客户应用:高安全、高可靠性要求的场景 主要性能: 1.支持USB3.0传输,实测可达到350MB/s 2.…

做安卓应用开发的我,转前端开发了

距离转前端开发已经快3个月了,现在自己也慢慢的熟悉了开发。 在2月份的时候。领导找我们移动小组的谈话,主要是关于转前端或者后端的问题。由于公司移动端的选型,对安卓原生的需求降低,问下我们转其他开发的需求。 我毫不犹豫的选…

【C++】滑动窗口:最大连续1的个数

1.题目 2.算法思路 其实在做这道题的时候并不需要真的把0翻转成1,只需要找到最长的子数组且该子数组中0的个数不大于K,就可以了! 当然我们首先想到的是暴力穷举法: 找到所有符合题意的子数组,跳出最长的那个就可以了…

Spring AI实战之一:快速体验(OpenAI)

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于Spring AI Spring Boot、Spring Cloud、Spring Data,作为一名Java程序员,相信您对这些概览早已耳熟能详,或者天天在用…

Django中如何让页面之间建立关系

今天给大家讲解两种让页面建立联系的方式 一、重定向 二、表单提交 先看第一种方式,重定向 首先需要了解客户端发起请求的过程 1、客户端向服务端发起请求,比如请求地址是:http://127.0.0.1:8000/lili/submit/ 2、程序根据路由找到视图函数 3、执行视…

sqlserver中替换空格和换行

sqlserver 中换行符,如下: sql语句如下(只是在window系统中): //替换换行-使用char(10)或者char(13) select REPLACE(F_CNKITitle ,char(10),) title from tzkj_CNKIContent tc where --F_CnkiContentID ffdc7412-41…

AI智剪新风尚:一键操作,批量视频剪辑轻松入门

随着科技的飞速进步,人工智能(AI)已逐渐渗透到我们生活的各个领域,其中,AI视频剪辑技术的出现,为视频制作带来了革命性的变革。如今,一键操作、批量处理的AI智剪正成为视频剪辑的新风尚,让剪辑工作变得前所…

Mysql进阶-索引篇

Mysql进阶 存储引擎前言特点对比 索引介绍常见的索引结构索引分类索引语法sql分析索引使用原则索引失效的几种情况sql提示覆盖索引前缀索引索引设计原则 存储引擎 前言 Mysql的体系结构: 连接层 最上层是一些客户端和链接服务,主要完成一些类似于连接…

访问网络附加存储:nfs

文章目录 访问网络附加存储一、网络附加存储1.1、存储类型1.3、通过NFS挂载NAS1.4、NFS挂载过程服务端客户端 二、实验:搭建NFS服务端及挂载到nfs客户端服务端客户端测试命令合集服务端客户端 访问网络附加存储 一、网络附加存储 1.1、存储类型 DAS:Di…

零代码编程:用Kimichat从PDF文件中批量提取图片

一个PDF文件中,有很多图片,想批量提取出来,可以借助kimi智能助手。 在借助kimi智能助手中输入提示词: 你是一个Python编程专家,要完成一个网页爬取Python脚本的任务,具体步骤如下: 打开文件夹…

2024年融资融券利率最新变化,又降低了?

最近有很多朋友在问我问融资融券的业务,都是比较关心这个利率的问题。确实,做融资融券最重要的利率,利率低会节省很大一笔资金,今天在这边给大家对接一个上市券商,可以给到大家万一的交易佣金和5%的融资利率&#xff0…