6.3. Ncurses-6.4-20230520

O pacote Ncurses contém bibliotecas para manuseio independente de terminal das telas de caracteres .

Tempo aproximado de construção: 0,3 UPC
Espaço em disco exigido: 51 MB

6.3.1. Instalação do Ncurses

Primeiro, assegure que gawk é encontrado primeiro durante a configuração:

sed -i s/mawk// configure

Então, execute os seguintes comandos para construir o aplicativo tic no anfitrião de construção:

mkdir build
pushd build
  ../configure
  make -C include
  make -C progs tic
popd

Prepare o Ncurses para compilação:

./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

O significado das novas opções de configuração:

--with-manpage-format=normal

Isso evita que o "Ncurses" instale páginas de manual comprimidas, o que possivelmente aconteça se a própria distribuição anfitriã tiver páginas de manual comprimidas.

--with-shared

Isso faz com que o Ncurses construa e instale bibliotecas C compartilhadas.

--without-normal

Isso evita que o "Ncurses" construa e instale bibliotecas "C" estáticas.

--without-debug

Isso evita que o "Ncurses" construa e instale bibliotecas de depuração.

--with-cxx-shared

Isso faz com que o Ncurses construa e instale vínculos C++ compartilhados. Também evita a construção e instalação de vínculos C++ estáticos.

--without-ada

Isso assegura que o Ncurses não construa suporte para o compilador Ada, o qual possivelmente esteja presente no anfitrião, porém não estará disponível até que nós entremos no ambiente chroot.

--disable-stripping

Essa chave impede o sistema de construção de usar o aplicativo strip oriundo do anfitrião. Usar ferramentas do anfitrião em aplicativos compilados cruzadamente pode causar falha.

--enable-widec

Essa chave faz com que bibliotecas de caracteres largos (por exemplo, libncursesw.so.6.4-20230520) sejam construídas em vez das normais (por exemplo, libncurses.so.6.4-20230520). Essas bibliotecas de caracteres largos são utilizáveis tanto em locales de múltiplos bytes quanto em tradicionais de oito (08) bits, enquanto bibliotecas normais funcionam adequadamente só em locales de oito (08) bits. Bibliotecas de caracteres largos e normais são compatíveis em fonte, mas não são compatíveis em binário.

Compile o pacote:

make

Instale o pacote:

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

O significado das opções do install:

TIC_PATH=$(pwd)/build/progs/tic

Nós precisamos passar o caminho do recém construído aplicativo tic que executa na máquina de construção, de forma que a base de dados de terminal possa ser criada sem erros.

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

A biblioteca "libncurses.so" é necessária para uns poucos pacotes que nós construiremos breve. Nós criamos esse link simbólico para usar a "libncursesw.so" como uma substituta.

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

O arquivo de cabeçalho "curses.h" contém a definição de várias estruturas de dados do "Ncurses". Com diferentes definições de macro de pré processador, dois conjuntos de definição de estrutura de dados podem ser usados: a definição de oito bits é compatível com a "libncurses.so" e a definição de caracteres largos é compatível com a "libncursesw.so". Como estamos usando a "libncursesw.so" como uma substituta da "libncurses.so", edite o arquivo de cabeçalho de forma que ele sempre usará a definição de estrutura de dados de caracteres largos compatível com a "libncursesw.so".

Detalhes acerca deste pacote estão localizados na Seção 8.29.2, “Conteúdo do Ncurses.”