移植 Lua 到 OMAPL138

2018-09-06

Lua 是十分小巧精简的,编译安装也是很简单。

先来看下在 X86 Ubuntu 上的编译安装:

curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz
sudo apt-get install libreadline-dev
tar xf lua-5.3.5.tar.gz && cd lua-5.3.5
make linux test
sudo make install

整个过程大约不到 2 分钟就完成了。

然后我们基于广州创龙的 TL138 开发板说明移植过程,也是相当简单的。

1、同样是先下载源码包并解压。

curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz
tar xf lua-5.3.5.tar.gz && cd lua-5.3.5

2、在 src/luaconf.h 去掉 readline 依赖。打开文件找到以下位置并注释对应行。

#if defined(LUA_USE_LINUX)
#define LUA_USE_POSIX
#define LUA_USE_DLOPEN      /* needs an extra library: -ldl */
//#define LUA_USE_READLINE  /* needs some extra libraries */
#endif

3、打开 src/Makefile 配置交叉编译环境。更新以下 CC、LIBS、AR、RANLIB 变量以及 linux 规则。

#CC= gcc -std=gnu99
CC= arm-arago-linux-gnueabi-gcc -std=gnu99
CFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_2 $(SYSCFLAGS) $(MYCFLAGS)
LDFLAGS= $(SYSLDFLAGS) $(MYLDFLAGS)
#LIBS= -lm $(SYSLIBS) $(MYLIBS)
LIBS= -lm $(SYSLIBS) $(MYLIBS) -static

#AR= ar rcu
#RANLIB= ranlib
AR= arm-arago-linux-gnueabi-ar rcu 
RANLIB= arm-arago-linux-gnueabi-ranlib
linux:
    $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl"
    #$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline"

4、source OMAPL138 的 MCSDK 开发环境并执行编译。

source /home/jack/omapl138/ti/mcsdk_1_01_00_02/linux-devkit/environment-setup
make linux

5、strip 生成的 Lua 虚拟机并放到开发板上使用。

arm-arago-linux-gnueabi-strip src/lua

这个操作可以把 lua 文件从 45+MB 降到 1MB 。

创建一个内容为 print(“Hello World!”) 的 hello.lua 文件,执行以下命令即可看到运行效果。

./lua hello.lua

至此,移植完成!

参考:http://wiki.chumby.com/index.php?title=Lua&printable=yes

廖杰良 - 2018-9-6