当前位置: 首页 > 科技观察

OpenHarmony编译搭建系统详解,从头搭建Windows下开发环境,超方便!

时间:2023-03-12 18:24:32 科技观察

自从OpenHarmony更新了dev-tool之后,就可以在Windows下搭建鸿蒙(轻量级)系统了。对于做MCU开发的朋友来说,学习鸿蒙OS会友好很多!我们可以更快地构建系统,以便快速学习和验证。但是网上关于这个开发环境搭建的文章比较少,坑也很多。那么这篇文章,我将带大家从零开始搭建dev-tool环境,帮助大家降低学习OpenHarmony的学习成本!先说说OpenHarmony的编译构建框架。了解了这个框架之后,就可以学习环境了。建筑和工程的发展,我心里会有很大的信心。1、穿针引线——编译构建OpenHarmony的编译构建子系统,基于GN和Ninja。GN是一个元构建系统,可以生成忍者构建文件(Ninjabuildfiles)。它首先在Chromium项目中用于替代GNU-Make。相比之下,这种构建方式有几个优点:可读性更强,更易于编写和维护。速度更快,谷歌官方给出的数据快了20倍。修改GN文件后,执行Ninja构建时会自动更新Ninja构建文件。更好的调试支持。在GN中,只需要一个print语句就可以解决它。1.运行机制该编译构建框架将OpenHarmony的平台、子系统、组件“一针一线”组织起来。如果把GN比作“针线”,将生成的Ninja文件比作“衣服”的“设计图”,那么整个编译构建过程就完全依赖于“针线”和“设计图”来制作“衣服”。其中,平台决定了整个“衣服”的材质,有的基于ARM,有的基于Risc-V;子系统代表衣服的款式和结构,有的是夏天穿的,比较薄(轻系统),有的是春秋穿的,比较适中(小系统),冬天穿很保暖(完整系统);而组件是子系统的基本单元,它决定了子系统的具体实现细节。整个编译的运行机制并不复杂,可以概括为:以命令行为驱动,调用gn,执行ninja。命令行主要做解析的工作,解析要编译的产品名称,加载相关配置(完成“衣服”的材质选择);调用gn是配置编译工具链和全局编译选项(准备“衣服”的设计图);最后执行Ninja开始编译,生成对应的产品版本(“穿针引线”完成衣服的编织)。在最新的2.0版本中,除了部分组件仍然保持make的构建方式外,其他的已经完全被GN和Ninja的构建方式所取代。预计后续版本将完成全面替换。2.构建过程编译构建过程如图所示。主要分为设置和编译两个步骤。可以参考下面的内容来理解:解释命令的作用,“hbset”:设置OpenHarmony源代码目录和需要编译的产品;“hbbuild”:编译产品、开发板或组件。编译的主要流程如下:NameProcessReadCompilationConfiguration根据产品选择的开发板,读取开发板config.gni文件的内容,主要包括编译工具链,编译链接命令和选项等.调用gngen命令读取产品配置并生成产品Solutionout目录和ninja文件调用ninja-Cout/board/product开始编译系统镜像打包打包组件编译产品,设置文件属性和权限,以及制作文件系统镜像可以访问:http://weharmonyos.com/openharmony/zh-cn/device-dev/subsystems,更多内容在编译构建章节了解,这里不再赘述。二、亮出拳头——环境搭建1、系统环境准备OpenHarmony的编译工具链目前是基于GNU的,类型有gnu-arm-gcc和gnu-risc-v-gcc。这些工具链最初的应用都是在ubuntu环境下进行的,整个系统的搭建也依赖于linux的GNU环境。我们希望在Windows下成功运行这些工具链。除了下载对应的window版本的工具链外,我们还需要准备GNU环境。除了编译工具链,环境搭建还依赖Python完成各种编译文件的组织(辅助GN和Ninja),通过Node.js提供npm环境,需要hpm提供包管理。完成以上准备工作后,就可以安装VsCode(dev-tool的载体,通过插件的方式运行在vscode上),然后安装dev-tool。具体列表如下:工具名称用途说明版本要求获取渠道Python编译构建工具V3.7.4~V3.8.x64位版本https://www.python.org/downloads/Node.js提供npm环境v12.0.0及以上64位版本https://nodejs.org/zh-cn/download/最新版hpm包管理工具npminstall-g@ohos/hpm-cliVisualStudioCode代码编辑工具V1.53及以上64位版本。https://code.visualstudio.com/下载DevEcoDeviceToolOpenHarmony源码编译、烧录、调试插件工具v2.2Beta1https://device.harmonyos.com/cn/ide#download下载前请使用华为开发者账号登录。如果您还没有注册,请先注册一个华为开发者账号。2.先说明一下系统环境。当您完成以下步骤后,您可以访问:http://weharmonyos.com/openharmony/zh-cn/device-dev/quick-start/找到您遇到的所有问题,并选择FAQ章节,进行解决。1)VisualStudioCode安装说明:如果你安装了VisualStudioCode,打开命令行工具,输入code--version命令,查看版本号是否为1.53以上;可以正常返回版本号,说明环境变量设置也正确。双击VisualStudioCode包进行安装。安装过程中请勾选“添加到PATH(重启后生效)”。安装完成后,打开命令行工具,输入code--version命令,可以正常显示版本号,说明安装成功。2)安装Python双击Python安装包进行安装,勾选“AddPython3.8toPATH”,然后点击InstallNow开始安装。等待安装完成后,点击关闭。打开命令行工具,输入python--version,查看安装结果。注意:如果安装了多个版本的Python,请确保该版本的优先级最高。具体命令可以自行百度。在命令行工具中,执行以下命令设置pip源,用于后续安装DevEcoDeviceTool时下载依赖组件包。pipconfigsetglobal.trusted-hostrepo.huaweicloud.compipconfigsetglobal.index-urlhttps://repo.huaweicloud.com/repository/pypi/simplepipconfigsetglobal.timeout1203)Node.js安装说明:如果已经安装了Node.js,打开命令行工具然后输入node-v命令,查看版本号是否为12.0.0以上。点击下载好的软件包进行安装,按默认设置点击下一步直到完成。安装过程中,Node.js会自动在系统的path环境变量中配置node.exe的目录路径。重新打开命令行工具,输入“node-v”命令,可以正常查询到Node.js的版本号,说明Node.js安装成功。4)安装hpm,需要确保Node.js安装成功。在安装hpm之前,请检查网络连接状态。如果网络不能直接访问Internet,则需要通过代理服务器访问。在这种情况下,您需要先设置npm代理,然后才能安装hpm。注意:如果已经安装了hpm,可以执行npmupdate-g@ohos/hpm-cli命令将hpm升级到最新版本。建议将npm源配置为国内镜像,例如华为云镜像源。npmconfigsetregistryhttps://repo.huaweicloud.com/repository/npm/打开命令行工具,执行以下命令安装最新版本的hpm。npminstall-g@ohos/hpm-cli安装完成后,执行以下命令(V为大写字母)查看hpm安装结果。hpm-V5)安装DevEcoDeviceTool插件安装DevEcoDeviceTool插件时,主机的用户名不能包含中文,否则会导致运行出错。DevEcoDeviceTool的正常运行依赖于C/C++和CodeLLDB插件。DevEcoDeviceTool安装完成后,会自动安装VisualStudioCode插件市场的C/C++和CodeLLDB插件。因此,在安装DevEcoDeviceTool之前,请检查VisualStudioCode的网络连接状态。如果网络不能直接访问Internet,则需要通过代理服务器访问。请先设置VisualStudioCode代理。注意:安装DevEcoDeviceTool时,请先关闭VisualStudioCode。解压DevEcoDeviceTool插件压缩包,双击安装包程序进行安装。安装过程中会自动安装DevEcoDeviceTool所需的依赖文件(如C/C++、CodeLLDB插件)和执行程序。安装完成后,命令行工具窗口会自动关闭(第一次需要较长时间,请耐心等待,如果失败,需要清除C盘缓存文件,重新安装)。启动VisualStudioCode,点击左侧按钮,在INSTALLED中查看C/C++、CodeLLDB、DevEcoDeviceTool是否安装成功。注意:如果C/C++和CodeLLDB插件没有安装成功,DevEcoDeviceTool无法正常运行。解决方法参考:C/C++和CodeLLDB插件离线安装。三、大显身手——工程编译1、开发板环境准备DevEcoDeviceTool目前支持windows下一键编译Hi3861V100源码;如涉及其他开发板源码编译,请参考Ubuntu平台源码编译。可以访问官网的开发者文档:https://device.harmonyos.com/cn/docs/ide/user-guides/我们需要准备Hi3861基于OpenHarmony的编译环境,即轻量级的编译环境系统。并下载专用源码。2、下载源码获取Hi3861V100开发板源码,请复制Windows平台源码下载链接,选择“FullCode(StandardSystem)”(Windows平台源码可以只能通过此链接获得)。连接地址:https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/%E6%BA%90%E7%A0%81%E8%8E%B7%E5%8F%96.md#section1186691118430解压源码包。请按照打开项目/源代码的指南打开源代码。请注意,在设置Framework时,请选择“Hb”。1)设置编译工具链Hi3861V100支持Windows平台编译。开发者需要通过以下工具链接手动下载,然后在Tools中设置相应的工具链,包括:Tools路径下设置的工具包名称获取地址ninjahttps://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/windows/ninja-win.zipninja.exe文件夹gnhttps://repo.huaweicloud.com/harmonyos/compiler/gn/1744/windows/gn-windows-amd64.zipgn.exe所在文件夹gcc_riscv32http://www.hihope.org/download/download.aspx?mtt=34hcc_riscv32_win文件夹tool_msyshttps://sourceforge.net/projects/mingw/msys\bin文件夹tool_sconsDevEcoDeviceTool自带工具-注意:是这里非常重要,Tools中设置的工具链名称必须对应上表给出的名称!!!必须完全一样!这个问题是目前的dev-tool还不够完善,要特别注意!!同时有些工具包不太好下载(国外),所以我把它们放到了我的Gitee仓库,下载链接:https://gitee.com/zeweni/harmony-os-win-build,记得给我点个Star~2)在Projects中编译源码,点击工程的Settings按钮,在hi3861V100配置选项卡中,设置源码编译类型build_type,默认为“release”类型,请根据需要修改然后点击保存按钮保存。2、保存后点击打开,打开Hi3861V100工程。3.点击图标打开DevEcoDeviceTool界面。在“PROJECTTASKS”中,点击相应开发板下的Build按钮,执行编译。4、等待编译完成,在TERMINAL窗口输出“SUCCESS”,编译完成。至此,我们就完成了在windows上搭建一站式开发环境的全过程!目前只支持轻量级系统,开发板为Hi3861,后续会增加其他开发板。本文转载自微信公众号“一口Linux”,可通过以下二维码关注。转载本文请联系易口Linux公众号。