linux - "cannot find -lreadline"编译Lua错误

标签 linux makefile installation

这应该是一个非常简单的问题——我正在尝试在 CentOS Linux 安装上编译 Lua(或者更确切地说 lua-vec,它是一个次要变体),但我收到以下错误:

[jt@flyboy src]#make linux
make all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses"
make[1]: Entering directory `/jt/flyboy/fly/lua/lua-vec/src'
gcc -o lua  lua.o liblua.a -lm -Wl,-E -ldl -lreadline -lhistory -lncurses
/usr/bin/ld: cannot find -lreadline
collect2: ld returned 1 exit status
make[1]: *** [lua] Error 1

这表明未安装 readline 库。但是……

[jt@flyboy src]#ls /usr/lib/libreadline*
/usr/lib/libreadline.so.5  /usr/lib/libreadline.so.5.1

有趣的是,如果我重新排列 readline/history/ncurses 的顺序,无论哪个先触发相同的错误,所以我怀疑这是某种文件夹规范问题,而不是缺少库问题。

有什么想法吗?


yum install readline-devel.x86_64 readline-devel.i386 ncurses-devel.i386 ncurses-devel.x86_64  

看来已经成功了!奇怪的是,我以前在没有这些库的情况下编译过这个……但是有足够的时间思考生活的奥秘……

最佳答案

libreadline 还不够,它会给你与 readline 相关的库。你需要 libreadline-dev 来编译依赖于 readline 的包,就像上面的例子一样。

在像 Red Hat 这样的发行版中,包的名称是 readline-devel

在这样的环境下,下面的命令可以解决问题:

$ yum install -y readline-devel

关于linux - "cannot find -lreadline"编译Lua错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3087524/

相关文章:

linux - 关闭代理内的套接字

linux - Ubuntu: "Startup Applications"中的 shell 脚本

cuda - 检查 makefile 中 nvcc 是否可用

c - Makefile 日志记录在第一个错误时停止并显示错误

C++ JSON 编译问题

linux - 用户数据脚本未在我的自定义 AMI 上运行,但在标准 Amazon linux 中运行

内部带有变量的 Makefile 通配符

deployment - 创建浏览器扩展

node.js - 在 ubuntu 12.04- "Project not configured (run ' waf configure' first 上安装 node.js 时出错)“

linux - 无法在 Linux shell 脚本生成的 .csv 文件中存储为 CCyy-mm-dd 格式