hakeの日記

Windows環境でプログラミングの勉強をしています。

ncurses-4.2のクロスコンパイル(ruby用)


というわけで自前のrubycursesを使用できるようにすべくncurses-4.2のコンパイルに挑戦。
結果としてrubyでのcurses使用には成功したわけなんだけれども、後から考えたらザウルスからlibncurses.so.4.2持ってきてrubyコンパイル時に参照するようにすれば良かったのではないかと思ったり。。。
rubyのconfigure時のオプションは以前のものと同じで実行。OpenZaurus上で動かなかったのもstatic linkでなくて、libncurses.so.5を参照するようにすれば動くのかもしれない。

それとは別にできたファイルサイズがdipusさんの1.8.4-4と比べるとでかいんだよなぁ、何でだろ?


以下、ncurses-4.2のクロスコンパイル手順
ncurses-5.5のときは対してトラブルも無くコンパイルできたのだけれども、ncurses-4.2ではconfigure時にgccとarm-linux-gccの区別をしてくれなかったりと不親切でMakefileを編集する必要があった、もしかしたらconfigure時に付けるオプションで何とかなるのかもしれない。また下ので手順ではmake install時のterminfoの作成?でエラーになる、今回はライブラリができれば良かったのでこの辺は無視。

ソース入手

ここからncurses-4.2.tar.gzを持ってきて展開

configureのオプション

make install時にDESTDIRが使用できないのでprefixにはそれを見越した場所を指定する

LDFLAGS='-static-libgcc' \
CFLAGS='-Os -static-libgcc -mcpu=xscale -mtune=xscale' \
CC='arm-linux-gcc' \
AR='arm-linux-ar' \
LD='arm-linux-ld' \
RANLIB='arm-linux-ranlib' \
./configure --prefix=/ipkg/ncurses-4.2/opt/QtPalmtop \
--host=arm-linux --target=arm-linux --build=i686-pc-linux-gnu \
--with-shared
Makefile修正(メモより)
# change ncursec/Makefile
# ----------
# HOSTCC          = gcc
# HOSTCCFLAGS     = -O2 $(CPPFLAGS)
# HOSTLDFLAGS     =  
#
# MK_SHARED_LIB   = arm-linux-gcc ......
# ----------
#
# change panel/Makefile
# ----------
# MK_SHARED_LIB   = arm-linux-gcc ......
# ----------
#
# change menu/Makefile
# ----------
# MK_SHARED_LIB   = arm-linux-gcc ......
# ----------
#
# change form/Makefile
# ----------
# MK_SHARED_LIB   = arm-linux-gcc ......
# ----------