8.30.1. Установка пакета Ncurses
Подготовьте Ncurses к компиляции:
./configure --prefix=/usr \
--mandir=/usr/share/man \
--with-shared \
--without-debug \
--without-normal \
--with-cxx-shared \
--enable-pc-files \
--enable-widec \
--with-pkg-config-libdir=/usr/lib/pkgconfig
Значение новых параметров настройки:
-
--with-shared
-
Этот параметр позволяет Ncurses собирать и устанавливать
общие библиотеки C.
-
--without-normal
-
Этот параметр отключает сборку и установку большинства
статических библиотек C.
-
--without-debug
-
Этот параметр предотвращает сборку и установку отладочных
библиотек.
-
--with-cxx-shared
-
Это аргумент позволяет Ncurses собирать и устанавливать общие
привязки C++. А также предотвращает сборку и установку
статических привязок C++.
-
--enable-pc-files
-
Этот параметр генерирует и устанавливает файлы .pc для
pkg-config.
-
--enable-widec
-
Этот параметр указывает, что при сборке пакета вместо обычных
библиотек (например, libncurses.so.6.4
) будут использоваться
библиотеки с расширенным набором символов (например,
libncursesw.so.6.4
). Библиотеки
с расширенным набором символов могут использоваться как с
многобайтовыми локалями, так и с традиционными 8-битовыми
локалями, тогда как обычные библиотеки работают только с
8-битовыми локалями. Библиотеки с расширенным набором
символов и обычные библиотеки совместимы на уровне исходного
кода, но не совместимыми на уровне двоичного.
Скомпилируйте пакет:
make
У этого пакета есть набор тестов, но его можно запустить только
после того, как пакет будет установлен. Тесты находятся в каталоге
test/
. Дополнительные сведения
смотрите в файле README
в этом
каталоге.
Установка этого пакета приведет к перезаписи libncursesw.so.6.4
. Это может привести к сбою
процесса оболочки, который использует код и данные из файла
библиотеки. Установите пакет с помощью DESTDIR
и правильно замените файл библиотеки с
помощью команды install(также отредактирован
заголовочный файл curses.h
, чтобы
обеспечить использование ABI расширенного набора символов, как это
сделано в Раздел 6.3,
«Ncurses-6.4-20230520»).
make DESTDIR=$PWD/dest install
install -vm755 dest/usr/lib/libncursesw.so.6.4 /usr/lib
rm -v dest/usr/lib/libncursesw.so.6.4
sed -e 's/^#if.*XOPEN.*$/#if 1/' \
-i dest/usr/include/curses.h
cp -av dest/* /
Многие приложения ожидают, что компоновщик может найти библиотеки
Ncurses, не поддерживающие расширенный набор символов. Используя
трюк ниже, свяжите такие приложения с библиотеками расширенного
набора символов с помощью символических ссылок (обратите внимание,
что ссылки .so
безопасны только в том
случае, если curses.h
отредактирован
так, чтобы всегда использовать ABI расширенного набора символов):
for lib in ncurses form panel menu ; do
ln -sfv lib${lib}w.so /usr/lib/lib${lib}.so
ln -sfv ${lib}w.pc /usr/lib/pkgconfig/${lib}.pc
done
Убедитесь, что старые приложения, которым нужна -lcurses
для сборки, собираются правильно:
ln -sfv libncursesw.so /usr/lib/libcurses.so
По желанию установите документацию Ncurses:
cp -v -R doc -T /usr/share/doc/ncurses-6.4-20230520
Примечание
С помощью приведенных выше инструкций не создаются библиотеки
Ncurses, не использующие расширенный набор символов, поскольку ни
один пакет, установленный путем компиляции из исходного кода, не
будет связан с ними во время выполнения. Тем не менее, известно
что некоторые бинарные приложения, которые связаны с библиотекой
Ncurses и не поддерживающие расширенный набор символов, требуют
наличия версии 5. Если вам необходимо иметь такие библиотеки
из-за какого-либо приложения, имеющегося только в бинарном виде,
или для обеспечения совместимости с LSB, соберите пакет с помощью
следующих команд:
make distclean
./configure --prefix=/usr \
--with-shared \
--without-normal \
--with-cxx-shared \
--without-debug \
--without-cxx-binding \
--with-abi-version=5
make sources libs
cp -av lib/lib*.so.5* /usr/lib
8.30.2. Сборка Ncurses - 32-битная версия
Выполните очистку после предыдущей сборки:
make distclean
Подготовьте Ncurses к компиляции:
CC="gcc -m32" CXX="g++ -m32" \
./configure --prefix=/usr \
--host=i686-pc-linux-gnu \
--libdir=/usr/lib32 \
--mandir=/usr/share/man \
--with-shared \
--without-debug \
--without-normal \
--with-cxx-shared \
--enable-pc-files \
--enable-widec \
--with-pkg-config-libdir=/usr/lib32/pkgconfig
Скомпилируйте пакет:
make
Установите пакет:
make DESTDIR=$PWD/DESTDIR install
mkdir -p DESTDIR/usr/lib32/pkgconfig
for lib in ncurses form panel menu ; do
rm -vf DESTDIR/usr/lib32/lib${lib}.so
echo "INPUT(-l${lib}w)" > DESTDIR/usr/lib32/lib${lib}.so
ln -svf ${lib}w.pc DESTDIR/usr/lib32/pkgconfig/$lib.pc
done
rm -vf DESTDIR/usr/lib32/libcursesw.so
echo "INPUT(-lncursesw)" > DESTDIR/usr/lib32/libcursesw.so
ln -sfv libncurses.so DESTDIR/usr/lib32/libcurses.so
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
rm -rf DESTDIR