本パッケージの詳細は 「Ncurses の構成」を参照してください。
Ncurses パッケージは、端末に依存しない、文字ベースのスクリーン制御を行うライブラリを提供します。
ビルドにあたって gawk が必ず最初に見つかるようにします。
sed -i s/mawk// configure
そして以下のコマンドを実行して、ビルドホスト上に「tic」プログラムをビルドします。
mkdir build pushd build ../configure make -C include make -C progs tic popd
Ncurses をコンパイルするための準備をします。
./configure --prefix=/usr \ --host=$LFS_TGT \ --build=$(./config.guess) \ --mandir=/usr/share/man \ --with-manpage-format=normal \ --with-shared \ --without-normal \ --with-cxx-shared \ --without-debug \ --without-ada \ --disable-stripping \ --enable-widec
configure オプションの意味
--with-manpage-format=normal
本パラメーターは Ncurses が圧縮された man ページをインストールしないようにします。 ホストディストリビューションそのものが圧縮 man ページを利用していると、同じようになってしまうからです。
--with-shared
これは Ncurses において共有 C ライブラリをビルドしインストールします。
--without-normal
これは Ncurses においてスタティックな C ライブラリのビルドおよびインストールを行わないようにします。
--without-debug
これは Ncurses においてデバッグライブラリのビルドおよびインストールを行わないようにします。
--with-cxx-shared
これは Ncurses において共有 C++ バインディングをビルドしインストールします。 同時にスタティックな C++ バインディングのビルドおよびインストールは行わないようにします。
--without-ada
このオプションは Ncurses に対して Ada コンパイラーのサポート機能をビルドしないよう指示します。 この機能はホストシステムでは提供されているかもしれませんが、chroot 環境に入ってしまうと利用できなくなります。
--disable-stripping
本スイッチは、ホスト上の strip を、ビルドシステムが利用しないようにします。 クロスコンパイルされたプログラムに対して、ホスト上のツールを使うと、ビルド失敗の原因になります。
--enable-widec
本スイッチは通常のライブラリ (libncurses.so.6.4-20230520
)
ではなくワイド文字対応のライブラリ (libncursesw.so.6.4-20230520
)
をビルドすることを指示します。 ワイド文字対応のライブラリは、マルチバイトロケールと従来の
8ビットロケールの双方に対して利用可能です。 通常のライブラリでは 8ビットロケールに対してしか動作しません。
ワイド文字対応と通常のものとでは、ソース互換があるもののバイナリ互換がありません。
パッケージをコンパイルします。
make
パッケージをインストールします。
make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install ln -sv libncursesw.so $LFS/usr/lib/libncurses.so sed -e 's/^#if.*XOPEN.*$/#if 1/' \ -i $LFS/usr/include/curses.h
install オプションの意味
TIC_PATH=$(pwd)/build/progs/tic
ビルドマシン上において、作り出したばかりの tic のパスを示すことが必要です。 こうすることで terminal データベースがエラーなく生成できることになります。
これから作り出すパッケージの中で、わずかですが libncurses.so
を必要としているものがあります。 このシンボリックリンクは
libncursesw.so
に代わるものとして生成します。
ヘッダーファイル curses.h
では Ncurses
データ構造に関するさまざまな定義が行われています。
プリプロセッサーマクロ定義を変えることによって、データ構造定義を二つの異なるセットとして定義しているものがあります。
つまり 8 ビット定義は libncurses.so
と互換性があり、ワイドキャラクター定義は libncursesw.so
と互換性があります。 これまで libncurses.so
の代わりとして libncursesw.so
を利用してきていることから、ヘッダーファイルを修正して、libncursesw.so
と互換性を持つワイドキャラクターデータ構造を常に用いるものとします。
本パッケージの詳細は 「Ncurses の構成」を参照してください。