6.19. Ncurses-5.7

Ncurses 程序包提供字符终端处理库。

预计编译时间: 0.8 SBU
所需磁盘空间: 35 MB

6.19.1. 安装 Ncurses

为编译 Ncurses 做准备:

./configure --prefix=/usr --with-shared --without-debug --enable-widec

配置选项的含义:

--enable-widec

该选项将宽字符库 (如 libncursesw.so.5.7) 编译替换成正常的库 (如 libncurses.so.5.7)。 这些宽字符库可以在多字节和传统的8位 locale 下使用, 然而正常的库一般只能在 8位 的locale环境下工作。 宽字符和正常的库是源码兼容的, 但不是二进制兼容的。

编译这个软件包:

make

这个软件包有一个测试套件,但是它只能在软件包安装以后才能运行。 这个测试工具位于 test/ 目录。 更多细节,请参考该目录中的README 文件。

安装这个软件包:

make install

把库文件移到更合理的 /lib 目录里:

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

由于库文件被移动了,所以有一个符号链接就指向了不存在的文件。 需要重新创建这个符号链接:

ln -sfv ../../lib/libncursesw.so.5 /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 ; \
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.7
cp -v -R doc/* /usr/share/doc/ncurses-5.7
[Note]

注意

上面的说明并没有创建非宽字符的 Ncurses 库, 因为没有软件包编译后在运行 时需要链接到它们的。 如果你因为一些只有二进制文件的程序,或为了和LFS兼容而一定要安装这样的库的话, 请 按照下面的命令编译这个软件包:

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.19.2. Ncurses 的内容

安装的程序: captoinfo (link to tic), clear, infocmp, infotocap (link to tic), ncursesw5-config, reset (link to tset), tic, toe, tput, and tset
安装的库:: libcursesw.{a,so} (symlink and linker script to libncursesw.{a,so}), libformw.{a,so}, libmenuw.{a,so}, libncurses++w.a, libncursesw.{a,so}, libpanelw.{a,so} and their non-wide-character counterparts without "w" in the library names.

简要描述

captoinfo

将 termcap 描述转化成 terminfo 描述

clear

如果可能,就进行清屏操作

infocmp

比较或显示 terminfo 描述

infotocap

将 terminfo 描述转化成 termcat 描述

ncursesw5-config

为ncurses 提供配置信息

reset

重新初始化终端到默认值

tic

是 terminfo 项说明的编译器。这个程序通过 ncurses 库将源代码格式的 terminfo 文件转换成编译后格式(二进制)的文件。 Terminfo 文件包含终端能力的信息。

toe

列出所有可用的终端类型,分别给出主名和描述。

tput

利用 terminfo 数据库使与终端相关的能力和信息值对 shell 可用, 初始化和重新设置终端, 或返回所要求终端为类型的长名。

tset

可以用来初始化终端

libcurses

A link to libncurses

libncurses

包含在终端屏幕上,用很多复杂的方法显示文本的函数; 使用这些函数的一个好的例子是在内核make menuconfig 过程中显示的菜单

libform

包含使用表格的函数

libmenu

使用菜单的函数

libpanel

使用面板的函数