如何快速搭建ESP32 Arduino开发环境并开始物联网开发?
2026/6/19 15:16:58
首先,需在 Ubuntu 系统中搭建Termony的编译环境。具体搭建步骤可参考:
开源鸿蒙终端工具Termony编译-WSL版
要在Termony项目中添加自定义工具,需先熟悉其整体编译流程。
build_termony(){if[[!-f arkui-x/licenses/LICENSE.sha256]];thenprepare_arkuixfibuild_termony_hnps build_termony_hap}如上,在 Linux 平台上,Termony使用build-linux.sh脚本进行构建。build_termony是编译的主函数,该功能主要包含三个阶段:
arkuix(可暂不关注)hvigorw工具将 HNP 内容打包进 HAP 中build_termony_hap内容如下:build_termony_hap(){hvigorw assembleHap# add hnp, and sign manuallypushd${PROJ_BASE_HOME}/entryzip-r../entry/build/default/outputs/default/entry-default-unsigned.hap hnppopd}其中,HNP 的编译是核心环节。各命令行工具(如tree、ls等)的源码位于build-hnp目录下的对应子目录中,每个工具都有独立的构建脚本(通常是Makefile)。
build_termony_hnps(){cd${PROJ_BASE_HOME}&&make-C build-hnp}以tree工具为例,其Makefile通常执行以下步骤:
sysroot目录,供后续 HAP 打包使用file.lst),记录该工具涉及的文件路径,供打包流程引用$catbuild-hnp/tree/Makefile include../utils/Makefrag all: download/2.2.1.tar.gzrm-rf temp buildmkdir-p temp buildcdtemp&&tarxvf../download/2.2.1.tar.gzcdtemp/tree-2.2.1&&makeCC=$(OHOS_SDK_HOME)/native/llvm/bin/$(OHOS_ARCH)-unknown-linux-ohos-clangCFLAGS="-O3 -static -std=c11 -pedantic -Wall -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX"LDFLAGS="-static"cdtemp/tree-2.2.1&&makeinstall-j$(shell nproc)MANDIR=$(shellpwd)/build/share/manDESTDIR=$(shellpwd)/build/binmkdir-p../sysrootcp-rv ./build/.../sysroot|teefile.lst download/2.2.1.tar.gz:mkdir-p downloadcddownload&&$(WGET)https://github.com/Old-Man-Programmer/tree/archive/refs/tags/2.2.1.tar.gz参考上述tree的构建方式,我们可以为自定义程序(hello)编写类似的Makefile,实现以下简化流程:
hello.c源码hello可执行文件安装到本地构建目录build-linux.sh,该自定义工具便会随 HNP 一起被打包进最终的 HAP,从而集成到Termony环境中。#include <stdio.h> int main() { printf("Hello HarmonyOS from WSL Ubuntu 22.04!\n"); return 0; }$ cat Makefile include ../utils/Makefrag TARGET := hello SRCS := hello.c .PHONY: all clean all: $(TARGET) cp -rf hello ../sysroot/bin/ $(TARGET): $(SRCS) $(CC) $(CFLAGS) $< -o $@ clean: rm -f $(TARGET)$ ./build-linux.sh -b注意,编译脚本在make时,会首先判断命令行工具目录下是否有.stamp文件,如果存在,则认为已经编译过,不会再编译该目录。
E:\>hdc appinstallentry-default-unsigned.hap[Info]Appinstallpath:E:\entry-default-unsigned.hap msg:install bundle successfully. AppMod finishTermony原工程能编译成功,再来添加测试自定义工具,不然很难定位问题所在。