lua 交叉編譯在arm上執行
最近接觸到lua 這門小巧的指令碼語言,發現很有意思。
可以代替ini等配置檔案,同時也可以動態的實現一些邏輯,對經常改動的專案有很大的作用
今天利用中午的午休時間把lua移植到了我們的arm平臺上,本來想著無非就是交叉編譯一下、很快就會完成,誰知道還是埋了幾個小坑需要手動處理。。。
本文就來 記錄一下安裝過程吧,免得哪天我又忘記了
1.下載
http://www.lua.org/download.html lua-5.3.2.tar.gz
2. 隨便放在哪裡解壓
tar xvf lua-5.3.2.tar.gz -----> lua-5.3.2
3. 改makefile & luaconf.h
vim lua-5.3.2/src/Makefile
這裡有幾個地方改動的比較多
(1)
CC= gcc -std=gnu99 改為你當前的交叉編譯的gcc
CC=/opt/arm-2012.09/bin/arm-none-linux-gnueabi-gcc-4.7.2 (這裡需要改成你自己的路徑)
(2)
LIBS= -lm $(SYSLIBS) $(MYLIBS) 改為
LIBS= -lm $(SYSLIBS) -static
(3)
AR= ar rcu 改為
AR=/opt/arm-2012.09/bin/arm-none-linux-gnueabi-ar rcu
(4)
RANLIB= ranlib 改為
RANLIB=/opt/arm-2012.09/bin/arm-none-linux-gnueabi-ranlib
(5)
linux 目標下
$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline" 改為
$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl"
(6)
luaconf.h的修改
#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
需要把 #define LUA_USE_READLINE 註釋掉
4 更改完這些東西就可以在src下面make linux
生成lua luac
lua是我們的指令碼直譯器,
(1)
有一個檔案test.lua -->
print("hello arm")
呼叫lua執行即可
lua test.lua
(2)
luac是指令碼編譯器
如果不想讓自己的指令碼被別人看到,可以通過luac編譯成二進位制
luac test.lua --->luac.out
呼叫方式相同
lua luac.out
將剛才生成的lua檔案 直接放到板子的環境變數中 一般來說放在這裡就可以了 /system/bin