2010-06-21 91 views
3

这应该是一个非常简单的问题 - 我试图在CentOS Linux安装上编译Lua(或者更确切地说lua-vec,它是一个小变体),而我得到以下错误:“在编译Lua时找不到-lreadline”错误

[[email protected] 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 lib没有安装。但是......

[[email protected] src]#ls /usr/lib/libreadline* 
/usr/lib/libreadline.so.5 /usr/lib/libreadline.so.5.1 

有趣的是,如果我重新安排的ReadLine /历史/ ncurses的顺序,以先到为准触发同样的错误,所以我怀疑这是某种形式的文件夹,规范的问题,而不是一个缺少图书馆问题。

任何想法?


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

似乎做的伎俩!奇怪的是,我已经编译过,没有这些库,但没有足够的时间琢磨人生的奥秘......

回答

9

libreadline是不够的,它会给你有关readline的库。你需要libreadline-dev来编译依赖于readline的包,就像上面的情况一样。

在红帽发行版一样,包的名称为readline-devel

下面的命令做在这样的环境中招:

$ yum install -y readline-devel

+3

或readline的-devel的CentOS上。 'yum install readline-devel' – nos 2010-06-21 19:17:10

+0

谢谢,没有。 – mcandre 2010-06-21 19:18:32

+0

CentOS上的软件包名称不同。实际上,我早些时候尝试过这种解决方案,但被不同名称绊倒了 - 请参阅我发布的正确解决方案。 – watusimoto 2010-06-21 19:19:50