1. 程式人生 > >lua 交叉編譯在arm上執行

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