#2020征文-开发板#移植lua到鸿蒙—在鸿蒙上用lua跑Hello World

系统
文章由鸿蒙社区产出,想要了解更多内容请前往:51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz
[[356031]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/#zz

惯例先放hello world


本项目地址: https://gitee.com/hiharmonica/lua

下载能在鸿蒙上跑的二进制文件

准备环境

1. 安装 docker

2. docker pull ystyle/open-harmony

  • ps: 本文使用与鸿蒙系统一同编译的方法。 如果自己有本地环境,可以把lua项目放鸿蒙代码目录里(或者使用软接连)

下载lua官方代码

  1. mkdir -p ~/code/ohos/ 
  2.  
  3. cd ~/code/ohos/ 
  4.  
  5. git clone https://github.com/lua/lua.git 

 编写BUILD.gn文件

因为要与系统一起编译, 为了方便,直接用替换掉示例的方法,这样就只需要写一个BUILD.gn就好了 

  1. # Copyright (c) 2020 YSTYLE(lxy5266@live.com) 
  2.  
  3. # Licensed under the Apache License, Version 2.0 (the "License"); 
  4.  
  5. # you may not use this file except in compliance with the License. 
  6.  
  7. # You may obtain a copy of the License at 
  8.  
  9.  
  10. # http://www.apache.org/licenses/LICENSE-2.0 
  11.  
  12.  
  13. # Unless required by applicable law or agreed to in writing, software 
  14.  
  15. # distributed under the License is distributed on an "AS IS" BASIS, 
  16.  
  17. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
  18.  
  19. # See the License for the specific language governing permissions and 
  20.  
  21. # limitations under the License. 
  22.  
  23. import("//build/lite/config/component/lite_component.gni"
  24.  
  25. import("//build/lite/ndk/ndk.gni"
  26.  
  27. static_library("hello_world") { 
  28.  
  29. sources = [ 
  30.  
  31. "lapi.c"
  32.  
  33. "lauxlib.c"
  34.  
  35. "lbaselib.c"
  36.  
  37. "lcode.c"
  38.  
  39. "lcorolib.c"
  40.  
  41. "lctype.c"
  42.  
  43. "ldblib.c"
  44.  
  45. "ldebug.c"
  46.  
  47. "ldo.c"
  48.  
  49. "ldump.c"
  50.  
  51. "lfunc.c"
  52.  
  53. "lgc.c"
  54.  
  55. "linit.c"
  56.  
  57. "liolib.c"
  58.  
  59. "llex.c"
  60.  
  61. "lmathlib.c"
  62.  
  63. "lmem.c"
  64.  
  65. "loadlib.c"
  66.  
  67. "lobject.c"
  68.  
  69. "lopcodes.c"
  70.  
  71. "loslib.c"
  72.  
  73. "lparser.c"
  74.  
  75. "lstate.c"
  76.  
  77. "lstring.c"
  78.  
  79. "lstrlib.c"
  80.  
  81. "ltable.c"
  82.  
  83. "ltablib.c"
  84.  
  85. "ltests.c"
  86.  
  87. "ltm.c"
  88.  
  89. "lua.c"
  90.  
  91. "lundump.c"
  92.  
  93. "lutf8lib.c"
  94.  
  95. "lvm.c"
  96.  
  97. "lzio.c" 
  98.  
  99.  
  100. include_dirs = [ 
  101.  
  102. "include"
  103.  
  104.  
  105.  
  106. lite_component("camera_app") { 
  107.  
  108. target_type = "executable" 
  109.  
  110. features = [ 
  111.  
  112. ":hello_world"
  113.  
  114.  
  115.  
  116. ndk_lib("app_sample") { 
  117.  
  118. deps = [ 
  119.  
  120. ":hello_world" 
  121.  
  122.  
  123. head_files = [ 
  124.  
  125. "include" 
  126.  
  127.  

 static_library里的source参照lua/makefile

编译脚本

创建编译脚本build-ohos.sh文件 

  1. cd ~/code/ohos/lua 
  2.  
  3. touch build-ohos.sh 
  4.  
  5. chmod +x build-ohos.sh 

 文件内容如下

  1. set -e 
  2.  
  3. rm -rf ./out ./bin 
  4.  
  5. docker run --rm -ti \ 
  6.  
  7. -e HARDWARE=ipcamera_hi3516dv300 \ 
  8.  
  9. -v ${PWD}/out:/OpenHarmony/out \ 
  10.  
  11. -v ${PWD}:/OpenHarmony/applications/sample/camera/app \ 
  12.  
  13. ystyle/open-harmony 
  14.  
  15. mkdir -p ./bin 
  16.  
  17. cp ./out/ipcamera_hi3516dv300/bin/camera_app ./bin/lua 
  18.  
  19. tar -zcf lua-5.4.2-ohos.tar.gz ./bin 
  20.  
  21. echo 'build success!' 

 与鸿蒙一起编译,这里使用我之前的docker镜像

  1. cd ~/code/ohos/lua 
  2.  
  3. ./build-ohos.sh 
  4.  
  5. # 看到 ohos ipcamera_hi3516dv300 build success! build success! 就编译成功了。 

  • 编译后软件在鸿蒙的 ./out/ipcamera_hi3516dv300/bin/camera_app
  • 脚本会把lua单独打包出来
  • 单独的lua可执行文件在bin目录

### 演示





本文链接:http://ystyle.top/2020/11/07/porting-Lua-to-openharmony/

博客内容遵循 知识共享 署名 - 非商业性 - 相同方式共享 4.0协议

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/#zz

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2020-12-29 09:59:01

鸿蒙HarmonyOS智能家居

2020-12-16 10:05:48

鸿蒙开发板Onenet平台

2021-08-02 09:46:55

鸿蒙HarmonyOS应用

2020-11-24 11:41:30

websocket

2020-12-15 11:57:49

Hi3861 HarmonyOS开发板

2020-12-15 09:33:40

鸿蒙Hi3861开发板

2020-12-24 10:05:54

鸿蒙鸿蒙开发Hello World

2013-12-12 17:30:03

Lua例子

2020-12-11 12:45:04

鸿蒙Hi3861游戏

2020-12-17 12:06:49

鸿蒙应用鸿蒙开发

2020-12-10 12:12:32

鸿蒙开发板init_lite

2020-11-17 12:15:36

MQTT开发

2021-12-30 16:12:07

鸿蒙HarmonyOS应用

2020-12-31 11:48:37

鸿蒙HarmonyOSHello world

2020-11-06 10:15:16

HiBurn

2020-10-14 09:37:03

HiBurn鸿蒙.bin文件

2020-12-21 09:57:52

OLED温湿度计hi3861

2020-12-02 11:55:40

OLED

2020-12-28 11:19:06

鸿蒙HarmonyOSPage Abilit

2021-12-16 15:14:54

鸿蒙HarmonyOS应用
点赞
收藏

51CTO技术栈公众号