这应该是一个非常简单的问题——我正在尝试在 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/