6.3. Ncurses-6.4-20230520

Ncurses パッケージは、端末に依存しない、文字ベースのスクリーン制御を行うライブラリを提供します。

概算ビルド時間: 0.3 SBU
必要ディスク容量: 51 MB

6.3.1. 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 データベースがエラーなく生成できることになります。

ln -sv libncursesw.so $LFS/usr/lib/libncurses.so

これから作り出すパッケージの中で、わずかですが libncurses.so を必要としているものがあります。 このシンボリックリンクは libncursesw.so に代わるものとして生成します。

sed -e 's/^#if.*XOPEN.*$/#if 1/' ...

ヘッダーファイル curses.h では Ncurses データ構造に関するさまざまな定義が行われています。 プリプロセッサーマクロ定義を変えることによって、データ構造定義を二つの異なるセットとして定義しているものがあります。 つまり 8 ビット定義は libncurses.so と互換性があり、ワイドキャラクター定義は libncursesw.so と互換性があります。 これまで libncurses.so の代わりとして libncursesw.so を利用してきていることから、ヘッダーファイルを修正して、libncursesw.so と互換性を持つワイドキャラクターデータ構造を常に用いるものとします。

本パッケージの詳細は 「Ncurses の構成」を参照してください。