明日にはでっかい太陽が昇るかもしれません。

「覚悟」とは!! 暗闇の荒野に!!進むべき道を切り開く事だッ!

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コンパイルが出来た。 CCmtune を変えれば、クロスコンパルもすんなりできると思う。

普通に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]