Подробная информация об этом пакете находится в Раздел 8.30.3, «Содержимое пакета Ncurses.»
Пакет Ncurses содержит библиотеки для независимой от терминала обработки ввода/вывода
Во-первых, убедитесь, что gawk найден первым во время настройки:
sed -i s/mawk// configure
Затем выполните следующие команды, чтобы собрать программу «tic» на хосте сборки:
mkdir build pushd build ../configure make -C include make -C progs tic popd
Подготовьте Ncurses к компиляции:
./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
Значение новых параметров настройки:
--with-manpage-format=normal
Этот аргумент предотвращает установку Ncurses сжатых страниц руководства, это может произойти, если сам дистрибутив хоста содержит сжатые страницы руководства.
--with-shared
Этот аргумент позволяет Ncurses собирать и устанавливать разделяемые библиотеки C.
--without-normal
Этот аргумент предотвращает сборку и установку статических библиотек C.
--without-debug
Этот аргумент предотвращает сборку и установку отладочных библиотек.
--with-cxx-shared
Это аргумент позволяет Ncurses собирать и устанавливать общие привязки C++. А также предотвращает сборку и установку статических привязок C++.
--without-ada
Этот аргумент гарантирует, что Ncurses будет собран без поддержки компилятора Ada, который может присутствовать на хосте, но будет недоступен, как только мы войдем в среду chroot.
--disable-stripping
Этот аргумент не позволяет системе сборки использовать программу strip с хоста. Использование инструментов хоста в кросс-компилируемой программе может привести к сбою.
--enable-widec
Этот аргумент указывает, что необходимо скомпилировать
библиотеки расширенных символов (такие как, libncursesw.so.6.4-20230520
) вместо обычных
(таких как, libncurses.so.6.4-20230520
). Эти библиотеки
расширенных символов можно использовать как в многобайтовой,
так и традиционной 8-битной локали, в то время как обычные
библиотеки корректно работают только в 8-битных локалях.
Библиотеки расширенных символов и обычные совместимы на
уровне исходного кода, но не совместимы в двоичном.
Скомпилируйте пакет:
make
Установите пакет:
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
Значение параметров установки:
TIC_PATH=$(pwd)/build/progs/tic
Нам нужно передать путь до только что собранной программы tic, которая работает на сборочной машине, чтобы база данных терминала была создана без ошибок.
Библиотека libncurses.so
необходима для нескольких пакетов, которые мы скоро соберем.
Мы создаем эту символическую ссылку, чтобы использовать
libncursesw.so
в качестве
замены.
Заголовочный файл curses.h
содержит определения различных структур данных Ncurses. С
разными определениями макросов препроцессора могут
использоваться два разных набора определений структуры
данных: 8-битное определение совместимо с libncurses.so
, а определение расширенного
набора символов совместимо с libncursesw.so
. Поскольку мы используем
libncursesw.so
вместо
libncurses.so
, отредактируйте
заголовочный файл, чтобы он всегда использовал определение
структуры данных расширенного набора символов, совместимое с
. libncursesw.so
.
Выполните очистку после предыдущей сборки:
make distclean
Подготовьте Ncurses к компиляции:
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 \ --enable-widec
Скомпилируйте пакет:
make
Установите пакет:
make DESTDIR=$PWD/DESTDIR TIC_PATH=$(pwd)/build/progs/tic install ln -s libncursesw.so DESTDIR/usr/lib32/libcursesw.so cp -Rv DESTDIR/usr/lib32/* $LFS/usr/lib32 rm -rf DESTDIR
Подробная информация об этом пакете находится в Раздел 8.30.3, «Содержимое пакета Ncurses.»