gpt4 book ai didi

shell - 编译 Readline 时对 "tputs"的 undefined reference

转载 作者:行者123 更新时间:2023-12-03 21:20:40 25 4
gpt4 key购买 nike

我想在 Ubuntu 上编译安装 readline 库。

我执行以下操作:

wget http://git.savannah.gnu.org/cgit/readline.git/snapshot/readline-8.0.tar.gz
tar -zxvf readline-8.0.tar.gz
cd readline-8.0
./configure --prefix=`pwd`/readline
make
make install

没错,但是当我使用 -lreadline选项,我得到这样的错误:
readline/lib/libreadline.so: undefined reference to `tputs'
readline/lib/libreadline.so: undefined reference to `tgoto'
readline/lib/libreadline.so: undefined reference to `tgetflag'
readline/lib/libreadline.so: undefined reference to `UP'
readline/lib/libreadline.so: undefined reference to `tgetent'
readline/lib/libreadline.so: undefined reference to `tgetnum'
readline/lib/libreadline.so: undefined reference to `PC'
readline/lib/libreadline.so: undefined reference to `tgetstr'

我想知道我做错了什么,为什么以及该怎么做?

如果您能帮助我,我将不胜感激。

最佳答案

显然,您缺少链接到 readline 的库。依靠。在我的系统上我得到

$ readelf --dynamic --symbols --wide /usr/lib64/libreadline.so.7.0 | fgrep tputs
17: 0000000000000000 0 FUNC GLOBAL DEFAULT UND tputs

tputsreadline 中的外部引用代码。

编辑:图书馆将是 libtinfo :

$ readelf --dynamic --symbols --wide /usr/lib64/libtinfo.so.6 | fgrep tputs
199: 0000000000019a30 151 FUNC GLOBAL DEFAULT 12 tputs
245: 00000000000195f0 930 FUNC GLOBAL DEFAULT 12 tputs_sp

所以解决方案是使用 -lreadline -ltinfo .

一般来说,我建议不要自己编译库,而是安装 -dev(el) Linux 发行版提供的软件包。然后你可以使用例如 pkg-config命令自动发现库的正确 C 标志和链接器选项。

关于shell - 编译 Readline 时对 "tputs"的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54387127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com