Lua のビルド
クロスコンパイルも見越して、Luaのコンパイル環境を構築してみます。
コンソール入力ライブラリの導入
ncursesライブラリの導入
curl -R -O http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.9.tar.gz tar zxvf ncurses-5.9.tar.gz cd ncurses-5.9 LDFLAGS='-static-libgcc' \ CFLAGS='-Os -static-libgcc -mtune=native' \ CC='x86_64-linux-gnu-gcc' \ ./configure \ --prefix=/opt/cross/native \ --host=$MACHTYPE \ --build=$MACHTYPE make make install
readlineライブラリの導入
curl -R -O ftp://ftp.gnu.org/gnu/readline/readline-6.3.tar.gz tar zxvf readline-6.3.tar.gz cd readline-6.3 LDFLAGS='-static-libgcc' \ CFLAGS='-Os -static-libgcc -mtune=native' \ CC='x86_64-linux-gnu-gcc' \ ./configure \ --prefix=/opt/cross/native \ --host=$MACHTYPE \ --build=$MACHTYPE make make install
Luaのコンパイル
curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz
lua の場合は、コンパイルでリンクエラーが発生するため、以下のパッチを当てる。
--- src/Makefile.orig 2015-01-18 15:34:58.479873200 +0900 +++ src/Makefile 2015-01-18 15:36:24.071871625 +0900 @@ -107,7 +107,7 @@ generic: $(ALL) linux: - $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline" + $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline -lncurses" macosx: $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_MACOSX" SYSLIBS="-lreadline" CC=cc
make linux test MYCFLAGS=-I/opt/cross/native/include MYLDFLAGS=-L/opt/cross/native/lib
これで、lua のコンパイルが出来た。 CC
や mtune
を変えれば、クロスコンパルもすんなりできると思う。
普通にLinuxが動作している環境であれば、 ncurses も readline もインストールしなくても動作する。
lua-5.3.0$ x86_64-linux-gnu-readelf -d src/lua | grep NEEDED 0x0000000000000001 (NEEDED) 共有ライブラリ: [libm.so.6] 0x0000000000000001 (NEEDED) 共有ライブラリ: [libdl.so.2] 0x0000000000000001 (NEEDED) 共有ライブラリ: [libc.so.6]