6.21. Ncurses-5.9

Ncurses 软件包包含用于不依赖终端处理字符屏幕的库。

预计构建时间: 0.6 SBU
磁盘空间需求: 40 MB

6.21.1. 安装 Ncurses

准备编译 Ncurses:

./configure --prefix=/usr           \
            --mandir=/usr/share/man \
            --with-shared           \
            --without-debug         \
            --enable-pc-files       \
            --enable-widec

配置选项的含义:

--enable-widec

这个选项使长字符库 (e.g.,libncursesw.so.5.9)被构建而非普通的库 (例如 libncurses.so.5.9) 这些长字符库在多字节和传统 8 位区域数据下都可用,而普通的库只在 8 位区域数据下正常工作。宽字符库和普通库是源代码兼容的,但二进制不兼容。

--enable-pc-files

此选项为 pkg-config 生成并安装 .pc 文件。

编译软件包:

make

此软件包带有测试套件,但它只能在软件包安装完毕后运行。该测试存在于 test/ 目录。 查阅此目录下的 README 文件来获得更多细节。

安装软件包:

make install

移动共享库到 /lib 目录,这里是它要求的位置:

mv -v /usr/lib/libncursesw.so.5* /lib

因为库被移动了,一个符号链接指向了一个不存在的文件夹。重新创建它:

ln -sfv ../../lib/$(readlink /usr/lib/libncursesw.so) /usr/lib/libncursesw.so

许多应用程序依然要求链接器能够找到非宽字符的 Ncurses 库。以符号链接和链接器脚本的方法欺骗这些应用程序链接到宽字符库:

for lib in ncurses form panel menu ; do
    rm -vf                    /usr/lib/lib${lib}.so
    echo "INPUT(-l${lib}w)" > /usr/lib/lib${lib}.so
    ln -sfv lib${lib}w.a      /usr/lib/lib${lib}.a
    ln -sfv ${lib}w.pc        /usr/lib/pkgconfig/${lib}.pc
done

ln -sfv libncurses++w.a /usr/lib/libncurses++.a

最后,确保在构建时需要 -lcurses 的旧应用程序仍可以正常构建:

rm -vf                     /usr/lib/libcursesw.so
echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
ln -sfv libncurses.so      /usr/lib/libcurses.so
ln -sfv libncursesw.a      /usr/lib/libcursesw.a
ln -sfv libncurses.a       /usr/lib/libcurses.a

如果需要,安装 Ncurses 文档:

mkdir -v       /usr/share/doc/ncurses-5.9
cp -v -R doc/* /usr/share/doc/ncurses-5.9
[注意]

注意

上面的指令不创建非宽字符 Ncurses 库,因为没有通过编译源代码安装的软件包会在运行时链接它们。如果你因为某些只提供二进制的应用程序或为了兼容 LSB 而必需这些库,按以下命令再次构建软件包:

make distclean
./configure --prefix=/usr    \
            --with-shared    \
            --without-normal \
            --without-debug  \
            --without-cxx-binding
make sources libs
cp -av lib/lib*.so.5* /usr/lib

6.21.2. Ncurses 的内容

安装的程序: captoinfo (链接到 tic), clear, infocmp, infotocap (链接到 tic), ncursesw5-config, reset (链接到 tset), tabs, tic, toe, tput 和 tset
安装的库: libcursesw.{a,so} (到 libncursesw.{a,so} 的符号链接及链接器脚本), libformw.{a,so}, libmenuw.{a,so}, libncurses++w.a, libncursesw.{a,so}, libpanelw.{a,so} 及它们的库名中不带 "w" 的非宽字符组件。
安装的目录: /usr/share/tabset, /usr/share/terminfo, /usr/share/doc/ncurses-5.9

简述

captoinfo

将 termcap 描述转换成 terminfo 描述

clear

如果可能,清除屏幕

infocmp

比对或打印 terminfo 描述

infotocap

将 terminfo 描述转换成 termcap 描述

ncursesw5-config

提供 Ncurses 的配置信息

reset

将一个终端再初始化到它的默认值

tabs

在一个终端上刷新和设置停止跳格

tic

将一个 terminfo 文件从源格式翻译成二进制格式的 terminfo 条目描述编译器需要 ncurses 库路径。一个 terminfo 文件包含有关某一特定终端的兼容性信息

toe

列出所有可用的终端类型,给出每一个的原名和描述

tput

使依赖终端兼容性的值可被 shell 使用;它同样可以被用来重设或初始化某一终端或报告其长名

tset

可以被用来初始化终端

libcurses

一个到 libncurses 的链接

libncurses

包含了可以多种复合方式在终端屏幕上显示文本的函数;一个较好的函数使用案例是在 kernel 的 make menuconfig 中显示的菜单

libform

包含了实现表格的函数

libmenu

包含了实现菜单的函数

libpanel

包含了实现面板的函数