6.3. Ncurses-6.4-20230520

Ncurses pakken inneholder biblioteker for terminaluavhengig håndtering av karakterskjermer.

Omtrentlig byggetid: 0.3 SBU
Nødvendig diskplass: 51 MB

6.3.1. Installasjon av Ncurses

Først, sørg for at gawk blir funnet først under konfigurasjonen:

sed -i s/mawk// configure

Kjør deretter følgende kommandoer for å bygge tic programmet på byggeverten:

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

Forbered Ncurses for kompilering:

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

Betydningen av de nye konfigureringsalternativene:

--with-manpage-format=normal

Dette forhindrer at Ncurses installerer komprimerte manualsider, noe som kan skje hvis selve vertsdistribusjonen har komprimerte manualsider.

--with-shared

Dette får Ncurses til å bygge og installere delte C biblioteker.

--without-normal

Dette forhindrer at Ncurses bygger og installerer statiske C biblioteker.

--without-debug

Dette forhindrer at Ncurses bygger og installerer feilsøkingsbiblioteker.

--with-cxx-shared

Dette får Ncurses til å bygge og installere delte C++ bindinger. Den forhindrer også at den bygger og installerer statiske C++ bindinger.

--without-ada

Dette sikrer at Ncurses ikke bygger støtte for Ada kompilatoren som kan være til stede på verten, men som ikke vil være tilgjengelig når vi går inn i chroot miljøet.

--disable-stripping

Denne bryteren hindrer byggesystemet fra å bruke strip programmet fra verten. Bruk av vertsverktøy på krysskompilerte programmer kan forårsake feil.

--enable-widec

Denne bryteren gjør at biblioteker med brede tegn (wide-character) f.eks., libncursesw.so.6.4-20230520) skal bygges i stedet for vanlige (f.eks., libncurses.so.6.4-20230520). Disse brede tegnbibliotekene er brukbare i både multibyte og tradisjonelle 8-biters lokaliteter, mens vanlige biblioteker fungerer som de skal bare i 8-biters lokaliteter. Brede karakterer og normale biblioteker er kildekompatibel, men ikke binærkompatibel.

Kompiler pakken:

make

Installer pakken:

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

Betydningen av installasjonsalternativene:

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

Vi må sende stien til den nettopp bygde tic programmet som kjører på byggemaskinen, slik at terminaldatabasen kan opprettes uten feil.

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

libncurses.so biblioteket trengs av noen få pakker vi skal bygge snart. Vi lager denne symbolkoblingen for å bruke libncursesw.so som en erstatning.

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

Deklarasjonsfilen curses.h inneholder definisjonen av ulike Ncurses datastrukturer. Med forskjellige preprocessor makro definisjoner to forskjellige sett med data strukturdefinisjon kan brukes: 8-biters definisjon er kompatibel med libncurses.so og definisjon av wide-character er kompatibel med libncursesw.so. Siden vi bruker libncursesw.so som erstatning for libncurses.so, rediger deklarasjonsfilen slik at den alltid vil bruke datastrukturdefinisjonen med wide-character kompatibel med libncursesw.so.

Detaljer om denne pakken finner du i Section 8.29.2, “Innhold i Ncurses”