http://storysky.blog.51cto.com/628458/345982/
昨天晚上磕磕绊绊的把nginx 装好了(所有需要的包都是源码包),今天开始部署数据库,因为需要lua 语言环境支持,所以需要先安装lua,结果这东西安装也不是那么顺利,
第一步是 make第二步 make linux
这里出错了,提示如下
luaconf.h:275:31: error: readline/readline.h: No such file or directory
luaconf.h:276:30: error: readline/history.h: No such file or directory
lua.c: In function 'pushline':
lua.c:182: warning: implicit declaration of function 'readline'
lua.c:182: warning: assignment makes pointer from integer without a cast
lua.c: In function 'loadline':
lua.c:210: warning: implicit declaration of function 'add_history'
make[2]: *** [lua.o] Error 1
make[2]: Leaving directory `/data/source/lua-5.1.4/src'
make[1]: *** [linux] Error 2
make[1]: Leaving directory `/data/source/lua-5.1.4/src'
make: *** [linux] Error 2
明显是找不到 readline,不用看肯定是 readline-devel没装,去找谷歌问了一通, 得到的答案都是安装 readline-devel rpm包可是客户不让我们安装rpm包啊,权限都不给怎么装。 下载个 readline源码包吧!装上之后问题来了,这东西没有 configure 晕,怎么去指定include 和 lib呢,从安装目录里面找了半天 只在 Makefile 里面找到了一个INSTALL_TOP 安装路径。我郁闷了,这可怎么办。
这时候开发部门的头刚好闲着没事,看到我犯愁呢就直接跟我说“我给你搞定~~~”,于是我把安装包发给他去一边自己折腾去了,一会儿就听他从那边抱怨"这tm什么破玩意儿"~~~
快到下班的时候他得意洋洋的过来找我,跟我说让我打开 src/Makefile 看看
果然有两个变量 CFLAGS= 和 MYLDFLAGS= 说这两个东西就是指定include 和lib的,他不说我还真不知道,他又把指定的方法教给我。我万分感谢,看着他得意的走了于是 按照他的方法把这两个变量修改了一下,如下是修改后的结果
CFLAGS= -O2 -Wall $(MYCFLAGS) -I/usr/local/ufo/lib/readline/include
.....
MYLDFLAGS=-L/usr/local/ufo/lib/readline/lib
修改后保存退出,然后又改了一下 INSTALL_TOP = /usr/local/ufo/lua
再次 make linux make install,搞定 (*^__^*)
编译lualua项目,其中用到了lua-5.1版本的源码,编译时提示缺少readline库,找不到readline/readline.h头文件等
发现系统中其实有安装readline库不过没有做链接和头文件目录拷贝,anyway不管这些,就当没有,重新安装readline库
1.下载readline-6.2.tar.gz
wget -c ftp://ftp.gnu.org/gnu/readline/readline-6.2.tar.gz
放到某个目录下,如/usr/local/
并解压出来 tar xzvf readline-6.2.tar.gz
进入源码目录 cd /usr/local/readline-6.2
2.配置Makefile文件
执行./configure 生成针对系统环境的编译文件Makefile,里面有编译后.a .so include等所要放置的位置及ln链接等操作
3.编译和安装
make && make install
安装完成后能看到静态库 动态库 头文件已经放置到既定位置
/usr/local/lib/libreadline.a
/usr/local/lib/libreadline.so
/usr/local/include/readline/
再去编译lualua就能顺利完成了。
另外:lua5.2.X的luaconf.h已经没有include readline.h了,只有比5.2更早版本才有