Readline 软件包包含一些提供命令行编辑和历史记录功能的库。
重新安装 Readline 会导致旧版本的库被重命名为 <库名称>.old。这一般不是问题,但某些情况下会触发 ldconfig 的一个链接 bug。运行下面的两条 sed 命令防止这种情况:
sed -i '/MV.*old/d' Makefile.in sed -i '/{OLDSUFF}/c:' support/shlib-install
下面防止在共享库中硬编码库文件搜索路径 (rpath)。该软件包在安装到标准位置时并不需要 rpath,而且 rpath 在一些情况下会产生我们不希望的副作用,甚至导致安全问题:
sed -i 's/-Wl,-rpath,[^ ]*//' support/shobj-conf
准备编译 Readline:
./configure --prefix=/usr \ --disable-static \ --with-curses \ --docdir=/usr/share/doc/readline-8.2.13
新的配置选项的含义:
--with-curses
该选项告诉 Readline 它可以在 curses 库中查找 termcap 库函数,而不是单独的 termcap
库。这样就能生成正确的 readline.pc
文件。
编译该软件包:
make SHLIB_LIBS="-lncursesw"
make 命令选项的含义:
SHLIB_LIBS="-lncursesw"
该选项强制 Readline 链接到 libncursesw
库。详见软件包 README
文件中“Shared Libraries”
(共享库) 一节。
该软件包不包含测试套件。
安装该软件包:
make install
如果需要,安装该软件包的文档:
install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.2.13