最近要做一个arm平台的通讯控制器,需要通过modbus采集数据并做PID控制。PID控制打算通过C程序嵌入外部脚本来执行,lua是一个很不错的选择,只需要c程序提供读写内部数据的接口给lua脚本调用就可以了。不过lua源代码没有提供arm-linux编译配置,没关系,自己加一个就可以了。1、lua源代码可以直接从官网下载
http://www.lua.org/download.html2、修改顶层Makefile文件
# Convenience platforms targets.PLATS= aix bsd c89 freebsd generic linux arm-linux macosx mingw posix solaris在这里添加了一个arm-linux3、修改src/Makefile文件和顶层Makefile一样PLATS变量里加入 arm-linux
PLATS= 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 编译成功。