#### Linux From Scratch - Version 12.0-rc1

### Chapter 6. Cross Compiling Temporary Tools

- Prev

  M4-1.4.19

- Next

  Bash-5.2.15

- Up
- Home

# 6.3. Ncurses-6.4

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 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 building and installing static C libraries.

`--without-debug`

  This prevents Ncurses 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`) to be built instead of normal ones (e.g., `libncurses.so.6.4`). 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
    echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so

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.

echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so

  The `libncurses.so` library is needed by a few packages we will build soon. We create this small linker script, as this is what is done in Chapter 8.

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

- Prev

  M4-1.4.19

- Next

  Bash-5.2.15

- Up
- Home