lua交叉编译到arm-linux上。

2019-07-13 06:57发布

    最近要做一个arm平台的通讯控制器,需要通过modbus采集数据并做PID控制。PID控制打算通过C程序嵌入外部脚本来执行,lua是一个很不错的选择,只需要c程序提供读写内部数据的接口给lua脚本调用就可以了。不过lua源代码没有提供arm-linux编译配置,没关系,自己加一个就可以了。1、lua源代码可以直接从官网下载http://www.lua.org/download.html
2、修改顶层Makefile文件# Convenience platforms targets.PLATS= aix bsd c89 freebsd generic linux arm-linux macosx mingw posix solaris在这里添加了一个arm-linux3、修改src/Makefile文件和顶层Makefile一样PLATS变量里加入 arm-linuxPLATS= aix bsd c89 freebsd generic linux arm-linux macosx mingw posix solaristargets里加入arm-linux平台的编译命令linux:        $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline"
arm-linux:        $(MAKE) $(ALL) CC="arm-linux-gnueabihf-gcc" AR="arm-linux-gnueabihf-ar rcu" RANLIB="arm-linux-gnueabihf-ranlib"         SYSCFLAGS="-DLUA_USE_LINUX -DLUA_USE_ARM_LINUX" SYSLIBS="-Wl,-E -ldl"这里自己加了一个编译开关LUA_ARM_LINUX,目的是去掉readline头文件。4、修改src/luaconf.h文件#if defined(LUA_USE_LINUX)#define LUA_USE_POSIX#define LUA_USE_DLOPEN          /* needs an extra library: -ldl */#if !defined(LUA_USE_ARM_LINUX)#define LUA_USE_READLINE        /* needs some extra libraries */#endif#endif
ok,在顶层目录执行 make arm-linux 编译成功。