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

#2020颜文-开发板#将lua移植到鸿蒙——用lua在鸿蒙上运行HelloWorld

时间:2023-03-12 05:45:36 科技观察

更多信息请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto。com/#zz约定先放helloworld这个项目地址:https://gitee.com/hiharmonica/lua下载可以在鸿蒙上运行的二进制文件准备环境1.安装docker2。dockerpullystyle/open-harmonyps:本文使用HarmonyOS编译的方法。如果有本地环境,可以把lua工程放到鸿蒙代码目录下(或者使用软链接)下载官方lua代码mkdir-p~/code/ohos/cd~/code/ohos/gitclonehttps:///github.com/lua/lua.git写BUILD.gn文件是因为需要用系统编译。为方便起见,采用直接替换示例的方式,这样只需要写一个BUILD.gn即可。#Copyright(c)2020YSTYLE(lxy5266@live.com)#LicensedundertheApacheLicense,Version2.0(“许可证”);#youmaynotusethisfileexceptincompliancewiththeLicense。#YoumayobtainacopyoftheLicenseat##http://www.apache.org/licenses/LICENSE-2.0##除非适用的ISawora同意以书面形式要求,否则软件#L在“没有任何形式的保证或条件”下进行分发,无论是明示还是暗示。#SeetheLicense了解特定语言的管理权限和#limitationsundertheLicense.import("//build/lite/config/component/lite_component.gni")import("//build/lite/ndk/ndk.gni")hello_library("sources=["lapi.c","lauxlib.c","lbaselib.c","lcode.c","lcorolib.c","lctype.c","ldblib.c","ldebug.c","ldo.c","ldump.c","lfunc.c","lgc.c","linit.c","liolib.c","llex.c","lmathlib.c","lmem.c","loadlib.c","lobject.c","lopcodes.c","loslib.c","lparser.c","lstate.c","lstring.c","lstrlib.c","ltable.c","ltablib.c","ltests.c","ltm.c","lua.c","lundump.c","lutf8lib.c","lvm.c","lzio.c"]include_dirs=["include",]}lite_component("camera_app"){target_type="executable"features=[":hello_world",]}ndk_lib("app_sample"){deps=[":hello_world"]head_files=["include"]}static_library中source引用lua/makefile编译脚本创建编译脚本build-ohos.sh文件cd~/code/ohos/luatouchbuild-ohos.shchmod+xbuild-ohos.sh文件内容如下et-erm-rf./out./bindockerrun--rm-ti\-eHARDWARE=ipcamera_hi3516dv300\-v${PWD}/out:/OpenHarmony/out\-v${PWD}:/OpenHarmony/applications/sample/camera/app\ystyle/open-harmonymkdir-p./bincp./out/ipcamera_hi3516dv300/bin/camera_app./bin/luatar-zcflua-5.4.2-ohos.tar.gz./binecho'构建成功!'用HarmonyCompile,这里我用我之前的docker镜像cd~/code/ohos/lua./build-ohos.sh#Seeohosipcamera_hi3516dv300buildsuccess!buildsuccess!编译成功。编译后软件在./out/ipcamera_hi3516dv300/bin/camera_app脚本会单独打包lua,在bin目录下创建一个单独的lua可执行文件###演示