8.31.1. Установка пакета Ncurses
Подготовьте Ncurses к компиляции:
./configure --prefix=/usr \
--mandir=/usr/share/man \
--with-shared \
--without-debug \
--without-normal \
--with-cxx-shared \
--enable-pc-files \
--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.
Скомпилируйте пакет:
make
У этого пакета есть набор тестов, но его можно запустить только
после того, как пакет будет установлен. Тесты находятся в каталоге
test/
. Дополнительные сведения
смотрите в файле README
в этом
каталоге.
Установка этого пакета приведет к перезаписи libncursesw.so.6.5
. Это может привести к сбою
процесса оболочки, который использует код и данные из файла
библиотеки. Установите пакет с помощью DESTDIR
и правильно замените файл библиотеки с
помощью команды install(также отредактирован
заголовочный файл curses.h
, чтобы
обеспечить использование ABI расширенного набора символов, как это
сделано в Раздел 6.3, «Ncurses-6.5»).
make DESTDIR=$PWD/dest install
install -vm755 dest/usr/lib/libncursesw.so.6.5 /usr/lib
rm -v dest/usr/lib/libncursesw.so.6.5
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.5
Примечание
С помощью приведенных выше инструкций не создаются библиотеки
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.31.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 \
--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