6.3. Ncurses-6.5-20250531

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

Omtrentlig byggetid: 0.4 SBU
Nødvendig diskplass: 53 MB

6.3.1. Installasjon av Ncurses

Først, kjør følgende kommandoer for å bygge «tic» programmet på byggeverten. Vi installerer den i $LFS/tools, slik at den blir funnet i PATH ved behov:

mkdir build
pushd build
  ../configure --prefix=$LFS/tools AWK=gawk
  make -C include
  make -C progs tic
  install progs/tic $LFS/tools/bin
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          \
            AWK=gawk

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.

AWK=gawk

Denne bryteren hindrer byggesystemet å bruke mawk programmet fra verten. Noen versjoner av mawk kan gjøre at denne pakken ikke blir bygget.

Kompiler pakken:

make

Installer pakken:

make DESTDIR=$LFS 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:

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.

6.3.2. Bygge Ncurses - 32bit

Rens forrige bygg:

make distclean

Klargjør Ncurses for kompilering:

CC="$LFS_TGT-gcc -m32"              \
CXX="$LFS_TGT-g++ -m32"             \
./configure --prefix=/usr           \
            --host=$LFS_TGT32       \
            --build=$(./config.guess)    \
            --libdir=/usr/lib32     \
            --mandir=/usr/share/man \
            --with-shared           \
            --without-normal        \
            --with-cxx-shared       \
            --without-debug         \
            --without-ada           \
            --disable-stripping

Kompiler pakken:

make

Installer pakken:

make DESTDIR=$PWD/DESTDIR TIC_PATH=$(pwd)/build/progs/tic install
ln -sv libncursesw.so DESTDIR/usr/lib32/libncurses.so
cp -Rv DESTDIR/usr/lib32/* $LFS/usr/lib32
rm -rf DESTDIR

6.3.3. Bygge Ncurses - x32bit

Rens forrige bygg:

make distclean

Klargjør Ncurses for kompilering:

CC="$LFS_TGT-gcc -mx32"             \
CXX="$LFS_TGT-g++ -mx32"            \
./configure --prefix=/usr           \
            --host=$LFS_TGTX32      \
            --build=$(./config.guess)    \
            --libdir=/usr/libx32    \
            --mandir=/usr/share/man \
            --with-shared           \
            --without-normal        \
            --with-cxx-shared       \
            --without-debug         \
            --without-ada           \
            --disable-stripping

Kompiler pakken:

make

Installer pakken:

make DESTDIR=$PWD/DESTDIR TIC_PATH=$(pwd)/build/progs/tic install
ln -sv libncursesw.so DESTDIR/usr/libx32/libncurses.so
cp -Rv DESTDIR/usr/libx32/* $LFS/usr/libx32
rm -rf DESTDIR

Detaljer om denne pakken finner du i Seksjon 8.31.4, «Innhold i Ncurses»