内容提要
Ubuntu 24.04编译时因缺少libtinfo.so.5报错,原因是系统移除了libtinfo5。解决方法:下载并安装libtinfo5_6.3-2ubuntu0.2_amd64.deb包,使用wget和dpkg命令即可解决。
延伸解读
为什么Ubuntu 24.04会缺少libtinfo.so.5
Ubuntu 24.04移除了libtinfo5软件包,而许多旧版软件(如LLVM 10)在编译时仍依赖libtinfo.so.5。这导致链接器无法找到该库,并出现未定义引用错误。理解这一背景有助于快速定位问题,避免误以为是编译环境配置错误。
手动安装旧库的注意事项
解决方法是从清华镜像下载libtinfo5的deb包并手动安装。但需注意,该包来自Ubuntu 22.04的universe仓库,版本为6.3-2ubuntu0.2。手动安装可能引入与系统库的兼容性问题,建议仅在编译旧软件时使用,并留意系统更新可能覆盖或冲突。
长期解决方案与替代思路
虽然手动安装libtinfo5能解决当前编译问题,但并非长久之计。更根本的解决方案是升级依赖库的软件版本,或使用容器化环境(如Docker)来隔离旧依赖。此外,也可考虑使用符号链接或设置rpath,但需谨慎操作,以免影响系统稳定性。
Q&A
Ubuntu 24.04 编译时提示找不到 libtinfo.so.5 怎么办?
Ubuntu 24.04 编译时提示找不到 libtinfo.so.5,是因为系统移除了 libtinfo5 包。解决方法是从 Ubuntu 软件源下载并安装 libtinfo5_6.3-2ubuntu0.2_amd64.deb 包,使用 wget 和 dpkg 命令即可。
为什么 Ubuntu 24.04 会缺少 libtinfo.so.5?
因为 Ubuntu 24.04 移除了 libtinfo5 包,导致依赖该库的程序在编译时无法找到 libtinfo.so.5。
如何下载并安装 libtinfo5 包来解决编译错误?
使用 wget 从清华镜像下载 libtinfo5_6.3-2ubuntu0.2_amd64.deb,然后使用 dpkg -i 命令安装。具体命令:wget https://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.2_amd64.deb -O libtinfo5_6.3-2ubuntu0.2_amd64.deb 和 dpkg -i libtinfo5_6.3-2ubuntu0.2_amd64.deb。
Ubuntu 22.04 及更早版本如何安装 libtinfo5?
对于 Ubuntu 22.04 及更早版本,可以直接使用 apt install libtinfo5 命令安装。
编译时出现 undefined reference to `del_curterm@NCURSES_TINFO_5.0.19991023' 等错误是什么原因?
这些错误是因为链接器找不到 libtinfo.so.5 库,导致 LLVM 等依赖该库的程序无法解析符号。安装 libtinfo5 包即可解决。
libtinfo5 包可以从哪里下载?
可以从 Ubuntu 软件源下载,文章中使用的是清华镜像:https://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.2_amd64.deb。