2026/1/1 1:22:45
网站建设
项目流程
thinkphp企业网站系统,超市小程序怎么做,it外包公司怎么样,wordpress收费主题破解Termony中添加hello命令环境准备理解编译结构添加自定义命令工具#xff08;以hello为例#xff09;hello.cMakefile编译安装到模拟器运行注意Termony作为鸿蒙终端工具环境#xff0c;集成了很多移植过来的命令行工具。这些工具大多源自 Linux 生态#xff0c;经过适配后可…Termony中添加hello命令环境准备理解编译结构添加自定义命令工具以hello为例hello.cMakefile编译安装到模拟器运行注意Termony作为鸿蒙终端工具环境集成了很多移植过来的命令行工具。这些工具大多源自 Linux 生态经过适配后可在鸿蒙上运行。那么这些工具是如何编译的又是否可以添加一个自定义的命令行工具呢下面介绍一种可行的添加方法——虽然该方法未必完全符合规范但可作为一种思路供参考。环境准备首先需在 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可暂不关注编译并生成 HNPHarmonyOS Native Package打包生成 HAPHarmonyOS Ability Package通过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 buildcdtemptarxvf../download/2.2.1.tar.gzcdtemp/tree-2.2.1makeCC$(OHOS_SDK_HOME)/native/llvm/bin/$(OHOS_ARCH)-unknown-linux-ohos-clangCFLAGS-O3 -static -stdc11 -pedantic -Wall -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS64 -DLINUXLDFLAGS-staticcdtemp/tree-2.2.1makeinstall-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添加自定义命令工具以hello为例参考上述tree的构建方式我们可以为自定义程序hello编写类似的Makefile实现以下简化流程生成hello.c源码将生成的hello可执行文件安装到本地构建目录完成后重新运行build-linux.sh该自定义工具便会随 HNP 一起被打包进最终的 HAP从而集成到Termony环境中。hello.c#include stdio.h int main() { printf(Hello HarmonyOS from WSL Ubuntu 22.04!\n); return 0; }Makefile$ 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 finish运行注意以上方法仅做实验调试目录结构也并未完全遵守编译规则确保Termony原工程能编译成功再来添加测试自定义工具不然很难定位问题所在。