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

news2024/11/27 12:53:23

由于我自己的南向设备开发平台的需求,我将当前几个不同的 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.04

WORKDIR /root


ARG DEBIAN_FRONTEND=noninteractive

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

ENV LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LC_ALL=en_US.UTF-8 TZ=Asia/Shanghai


CMD ["/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.coloradmin.cn/o/1659570.html

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

相关文章

Linux学习笔记4---点亮LED灯(汇编裸机)

本系统学习利用的是正点原子的阿尔法mini开发板,本系列的学习笔记也是按照正点原子的教程进行学习,但并不是利用虚拟机进行开发,而是使用Windows下的子系统WSL进行学习。 因为 Cortex-A 芯片一上电 SP 指针还没初始化,C 环境还没准…

网络安全之弱口令与命令爆破(下篇)(技术进阶)

目录 一,什么是弱口令? 二,为什么会产生弱口令呢? 三,字典的生成 四,九头蛇(hydra)弱口令爆破工具 1,破解ssh登录密码 2,破解windows登录密码 3&#xf…

新增分类——后端

实现功能: 代码开发逻辑: 页面发送ajax请求,将新增分类窗口输入的数据以json形式提交到服务端服务端Controller接收页面提交的数据并调用Service将数据进行保存Service调用Mapper操作数据库,保存数据 代码实现: Con…

测试项目实战——安享理财1(测试用例)

说明: 1.访问地址: 本项目实战使用的是传智播客的安享理财项目(找了半天这个项目能免费用且能够满足测试实战需求) 前台:http://121.43.169.97:8081/ 后台:http://121.43.169.97:8082/ (点赞收藏…

电脑ip地址设置成什么比较好

随着信息技术的快速发展,IP地址已成为电脑在网络世界中的“身份证”。它不仅是电脑在网络中进行通信的基础,也直接关系到网络连接的稳定性、安全性和效率。然而,面对众多IP地址设置选项,许多用户可能会感到困惑。那么,…

C#进阶-OleDb操作Excel和数据库

在C#编程中,使用OleDb可以方便地实现对Excel文件和数据库的操作。本文探讨了在C#中使用OleDb技术操作Excel和数据库的策略。文章详述了OleDb的定义、配置环境的步骤,并通过实际代码示例演示了如何高效读写Excel文件和交互数据库。文中还评估了OleDb技术的…

5到15秒片头音乐200款,30秒片头音效音乐大全

一、素材描述 本套音乐音效素材,大小2.88G,13个压缩文件。 二、素材目录 200个5到15秒的片头音乐.zip 30秒片头-1.zip 30秒片头-2.zip 30秒片头-3.zip 30秒片头-4.zip 30秒片头-5.zip 30秒片头-6.zip 30秒片头-7.zip 30秒片头-8.zip 30秒片头…

武汉星起航电子商务有限公司助力打造一站式跨境电商服务

在全球电商市场蓬勃发展的当下,武汉星起航电子商务有限公司以其独特的经营模式和全方位的服务体系,成为亚马逊自营领域的佼佼者。自2017年专注于亚马逊自营以来,武汉星起航凭借丰富的经验和深入的市场洞察,为合作伙伴提供了一站式…

生信软件17 - 基于fasta文件的捕获探针设计工具catch

catch是broad研究所开发的一款用于设计捕获探针的python软件。 1. 软件安装 适用于Linux / windows等,安装要求Python≥3.8 | NumPy≥1.22 | SciPy≥1.8.0 # github安装 git clone https://github.com/broadinstitute/catch.git cd catch pip install -e .# coon…

react项目中封装一个通用的边界Boundary

# Boundary 通用的边界,同时是一个Suspense 和一个 ErrorBoundary 正常情况不直接用,使用一下几个封装好的: -Boundary.FullSizeLoading: 占满父容器全部高度,居中显示等待动画; -Boundary.Loading: 占满一行,显示一个普通尺寸的等待动画; -Boundary.Blank: 什么都不显示…

未来编码探索:揭秘Java的进化之旅与技术革新!

Java是一种广泛使用的编程语言,自1995年问世以来,它在企业级应用、移动应用开发、大数据处理等领域都有着广泛的应用。随着时间的推移,Java也在不断发展和进化,以满足不断变化的技术需求和市场趋势。本文将全面详细地探讨Java的未…

Linux 用户进程启动与Systemd

Linux用户空间的启动 我们都知道,Linux在内核的初始化自身的流程结束后,就会将程序流的运行转到用户态,也就是进入init进程流之后,他会按照这个流程进行初始化: init进程初始化 基础的底层服务:比如说ude…

视频号小店怎么开通优选联盟?开通之后有什么好处?

大家好,我是电商糖果 糖果做视频号小店已经快两年时间了,这期间也一直坚持在网上分享自己做店的经验。 这里糖果就来给大家分享一下,视频号小店怎么开通优选联盟,店铺开通之后会有什么好处? 首先我们要知道优选联盟是…

20240509解决Protel99se导入philips.ddb出现File is not recognized的问题

20240509解决Protel99se导入philips.ddb出现File is not recognized的问题 2024/5/9 16:25 缘起:最近需要用到/画PCB,想到十年前用过Protel99SE。 使用的系统:WIN10/WIN11都会出错。WIN7没有测试! 从115网盘的角落里找到七集视频…

Objective-C的对象复制与拷贝选项

对象复制与拷贝 文章目录 对象复制与拷贝copy与mutablecopycopy与mutablecopy的简介示例:不可变对象的复制可变对象的复制 NSCopying和NSMutableCopying协议深复刻和浅复刻浅拷贝(Shallow Copy):深拷贝(Deep Copy&…

【python】将json内解码失败的中文修改为英文(‘utf-8‘ codec can‘t decode,labelme标注时文件名未中文)

出现问题的场景: 语义分割数据集,使用labelme工具进行标注,然后标注图片存在中文名,导致json标签文件写入中文图片名,从而解析失败。 代码解析json文件时,出现报错: python脚本需求&#x…

Java 7大排序

🐵本篇文章将对数据结构中7大排序的知识进行讲解 一、插入排序 有一组待排序的数据array,以升序为例,从第二个数据开始(用tmp表示)依次遍历整组数据,每遍历到一个数据都再从tmp的前一个数据开始&#xff0…

论文解读--High-resolution Automotive Radar Point Cloud Imaging and Processing

高分辨汽车雷达点云成像和处理 摘要 汽车雷达具有体积小、硬件成本低、全天候工作、高分辨率等公认的优点,是高级驾驶辅助系统(ADAS)必不可少的一类重要传感器。然而,低角度分辨率和低成像性能的限制很难满足下一阶段ADAS的需要。新兴的4D成像雷达采用多…

【随笔】Git 高级篇 -- 不带 source 参数的命令 git fetch git push(三十九)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

【工具】如何提取一个mp4文件的关键帧

文章目录 怎么做如何安装ffmepgUbuntu 或 DebianCentOS 或 FedoramacOSWindows其他 Linux 发行版 实践什么是关键帧 怎么做 你可以使用ffmpeg这个强大的多媒体处理工具来提取mp4文件中的关键帧。以下是一个示例命令,可以使用ffmpeg从mp4文件中提取关键帧&#xff1…