6.3. Ncurses-6.4-20230520

#### Linux From Scratch - Version 12.1

### Chapter 6. Cross Compiling Temporary Tools

- Prev

  M4-1.4.19

- Next

  Bash-5.2.21

- Up
- Home

# 6.3. Ncurses-6.4-20230520

The Ncurses package contains libraries for terminal-independent handling of character screens.

Approximate build time: 0.3 SBU
Required disk space: 51 MB

## 6.3.1. Installation of Ncurses

First, ensure that gawk is found first during configuration:

    sed -i s/mawk// configure

Then, run the following commands to build the “tic” program on the build host:

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

Prepare Ncurses for compilation:

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

The meaning of the new configure options:

`--with-manpage-format=normal`

  This prevents Ncurses from installing compressed manual pages, which may happen if the host distribution itself has compressed manual pages.

`--with-shared`

  This makes Ncurses build and install shared C libraries.

`--without-normal`

  This prevents Ncurses from building and installing static C libraries.

`--without-debug`

  This prevents Ncurses from building and installing debug libraries.

`--with-cxx-shared`

  This makes Ncurses build and install shared C++ bindings. It also prevents it building and installing static C++ bindings.

`--without-ada`

  This ensures that Ncurses does not build support for the Ada compiler, which may be present on the host but will not be available once we enter the chroot environment.

`--disable-stripping`

  This switch prevents the building system from using the strip program from the host. Using host tools on cross-compiled programs can cause failure.

`--enable-widec`

  This switch causes wide-character libraries (e.g., `libncursesw.so.6.4-20230520`) to be built instead of normal ones (e.g., `libncurses.so.6.4-20230520`). These wide-character libraries are usable in both multibyte and traditional 8-bit locales, while normal libraries work properly only in 8-bit locales. Wide-character and normal libraries are source-compatible, but not binary-compatible.

Compile the package:

    make

Install the package:

    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

The meaning of the install options:

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

  We need to pass the path of the newly built tic program that runs on the building machine, so the terminal database can be created without errors.

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

  The `libncurses.so` library is needed by a few packages we will build soon. We create this symlink to use `libncursesw.so` as a replacement.

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

  The header file `curses.h` contains the definition of various Ncurses data structures. With different preprocessor macro definitions two different sets of the data structure definition may be used: the 8-bit definition is compatible with `libncurses.so` and the wide-character definition is compatible with `libncursesw.so`. Since we are using `libncursesw.so` as a replacement of `libncurses.so`, edit the header file so it will always use the wide-character data structure definition compatible with `libncursesw.so`.

Details on this package are located in Section 8.29.2, “Contents of Ncurses.”

- Prev

  M4-1.4.19

- Next

  Bash-5.2.21

- Up
- Home