该软件包的详细信息可以在第 8.28.2 节 “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 安装压缩的手册页面,否则在宿主发行版使用压缩的手册页面时,Ncurses 可能这样做。
--with-shared
该选项使得 Ncurses 将 C 函数库构建并安装为共享库。
--without-normal
该选项禁止将 C 函数库构建和安装为静态库。
--without-debug
该选项禁止构建和安装用于调试的库。
--with-cxx-shared
该选项使得 Ncurses 将 C++ 绑定构建并安装为共享库,同时防止构建和安装静态的 C++ 绑定库。
--without-ada
这保证不构建 Ncurses 的 Ada 编译器支持,宿主环境可能有 Ada 编译器,但进入 chroot 环境后 Ada 编译器就不再可用。
--disable-stripping
该选项防止构建过程使用宿主系统的 strip 移除调试符号。对交叉编译产生的程序使用宿主工具可能导致构建失败。
--enable-widec
该选项使得宽字符库 (例如 libncursesw.so.6.3
) 被构建,而不构建常规字符库 (例如
libncurses.so.6.3
)。宽字符库在多字节和传统
8 位 locale 中都能工作,而常规字符库只能在 8 位 locale
中工作。宽字符库和普通字符库在源码层面是兼容的,但二进制不兼容。
编译该软件包:
make
安装该软件包:
make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so
安装选项的含义:
TIC_PATH=$(pwd)/build/progs/tic
我们需要传递刚刚构建的,可以在宿主系统运行的 tic 程序的路径,以保证正确创建终端数据库。
我们很快将会构建一些需要 libncurses.so
库的软件包。创建这个简短的链接脚本,正如我们在第 8 章中将要做的那样。
该软件包的详细信息可以在第 8.28.2 节 “Ncurses 的内容”中找到。