Android编译lua-5.4.1
我的目标是编译一个在android上的一个lua解释器
环境
NDK版本为21.1.6352462
CMake版本为3.15.0
lua源码为5.4.1
ninja版本1.8.2
过程
我打算直接使用CMake命令生成ninja的工程文件,然后使用ninja命令进行编译,由于lua源码是使用Makefile,需要添加一个CMakeLists.txt文件
1 CMakeLists.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| # NDK版本需要大于21否则缺少函数 set(ANDROID_NATIVE_API_LEVEL 21) # 使用NDK的toolchain进行编译 include(C:/Users/Tbolp/AppData/Local/Android/Sdk/ndk/21.1.6352462/build/cmake/android.toolchain.cmake)
cmake_minimum_required(VERSION 3.12)
project(lua-5.4.1)
add_executable(lua-5.4.1 src/lapi.c src/lcode.c src/lctype.c src/ldebug.c src/ldo.c src/ldump.c src/lfunc.c src/lgc.c src/llex.c src/lmem.c src/lobject.c src/lopcodes.c src/lparser.c src/lstate.c src/lstring.c src/ltable.c src/ltm.c src/lundump.c src/lvm.c src/lzio.c src/lauxlib.c src/lbaselib.c src/lcorolib.c src/ldblib.c src/liolib.c src/lmathlib.c src/loadlib.c src/loslib.c src/lstrlib.c src/ltablib.c src/lutf8lib.c src/linit.c src/lua.c)
|
2 编译
生成build.ninja
编译文件
成功后会生成一个lua-5.4.1的文件
3 运行
需注意普通目录没有运行权限,需要将文件放入/data/local/tmp目录运行
1 2 3 4 5 6 7 8 9 10 11
| adb devices -l
adb push lua-5.4.1 /data/local/tmp
adb shell
cd /data/local/tmp
chmod u+x lua-5.4.1
./lua-5.4.1
|
最后可以看到进入了lua交互中
文档
https://cmake.org/cmake/help/v3.19/manual/cmake-toolchains.7.html#cross-compiling-for-android
https://cmake.org/cmake/help/v3.19/manual/cmake-commands.7.html
https://bbs.pediy.com/thread-213564.htm