转载请注明原文地址:http://www.cnblogs.com/dongxiao-yang/p/4878323.html

luasocket安装过程中遇到不少坑,之前采用的是从公司以前服务器的里面找一个其他同学下好的rpm安装包直接安装,安装的路径以及产生的库文件在什么位置都不知道怎么控制,今天抽时间一通google,终于跑通了源码安装的过程。

官方下载地址:http://files.luaforge.net/releases/luasocket/luasocket/luasocket-2.0.2

tar -zxvf  luasocket-2.0.2.tar.gz

cd luasocket-2.0.2

修改配置文件config

由于是在安装openresty后再安装luasocket,修改配置文件为,这样将制定luasocket生成的库文件放到openresty默认会寻找的路径下

INSTALL_TOP_SHARE=/opt/openresty/luajit/share/lua/5.1

INSTALL_TOP_LIB=/opt/openresty/luajit/lib/lua/5.1

参考http://blog.csdn.net/wzzfeitian/article/details/8866390教程介绍

make

这种情况下会报错

cd src; make all

make[1]: Entering directory `/opt/luasocket-2.0.2/src'

gcc -I/usr/share/lua/5.1 -DLUASOCKET_DEBUG  -pedantic -Wall -O2 -fpic   -c -o luasocket.o luasocket.c

luasocket.c:20:17: error: lua.h: No such file or directory

luasocket.c:21:21: error: lauxlib.h: No such file or directory

luasocket.c:24:24: error: compat-5.1.h: No such file or directory

In file included from luasocket.c:30:

luasocket.h:30: error: expected ')' before '*' token

In file included from luasocket.c:31:

auxiliar.h:37: error: expected ')' before '*' token

auxiliar.h:38: error: expected ')' before '*' token

auxiliar.h:39: error: expected ')' before '*' token

auxiliar.h:40: error: expected ')' before '*' token

auxiliar.h:41: error: expected ')' before '*' token

auxiliar.h:42: error: expected ')' before '*' token

auxiliar.h:43: error: expected ')' before '*' token

auxiliar.h:44: error: expected ')' before '*' token

auxiliar.h:45: error: expected ')' before '*' token

auxiliar.h:46: error: expected ')' before '*' token

In file included from luasocket.c:32:

except.h:33: error: expected ')' before '*' token

In file included from luasocket.c:33:

timeout.h:19: error: expected ')' before '*' token

timeout.h:26: error: expected ')' before '*' token

In file included from luasocket.c:34:

buffer.h:39: error: expected ')' before '*' token

buffer.h:41: error: expected ')' before '*' token

buffer.h:42: error: expected ')' before '*' token

buffer.h:43: error: expected ')' before '*' token

buffer.h:44: error: expected ')' before '*' token

In file included from luasocket.c:35:

inet.h:27: error: expected ')' before '*' token

inet.h:35: error: expected ')' before '*' token

inet.h:36: error: expected ')' before '*' token

In file included from luasocket.c:36:

tcp.h:34: error: expected ')' before '*' token

In file included from luasocket.c:37:

udp.h:31: error: expected ')' before '*' token

In file included from luasocket.c:38:

select.h:15: error: expected ')' before '*' token

luasocket.c:43: error: expected ')' before '*' token

luasocket.c:44: error: expected ')' before '*' token

luasocket.c:45: error: expected ')' before '*' token

luasocket.c:50: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'mod'

luasocket.c:60: warning: ISO C does not allow extra ';' outside of a function

luasocket.c:62: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'func'

luasocket.c:66: warning: ISO C does not allow extra ';' outside of a function

luasocket.c:71: error: expected ')' before '*' token

luasocket.c:80: error: expected ')' before '*' token

luasocket.c:89: error: expected ')' before '*' token

luasocket.c:113: error: expected ')' before '*' token

make[1]: *** [luasocket.o] Error 1

make[1]: Leaving directory `/opt/luasocket-2.0.2/src'

make: *** [all] Error 2

这个问题之前查了几次没有结果,看错误输出也一直以为是下的源码包有问题,下了好几个版本都不行,后来偶然看到了http://stackoverflow.com/questions/20490854/luasocket-c2017-error-lua-h-no-such-file-or-directory

有人遇到了同样的问题,生硬照搬答案里make LUAINC=-I/usr/include/lua5.1/的方法也没有解决,反而是看到问题的comment小字有人回复了一句话搞明白了问题的真正原因:

lua.h is the main header file for the Lua C source code. Either you don't have the lua source installed, or you haven't told the compiler where to find it. – Roddy Dec 10 '13 at 9:46

所以说其实是gcc编译命令找不到本机lua的源码到底在什么地方,自然无法编译。正好错误里提示lua.h这个文件找不到,find一下其实就在openresty的build/lua-5.1.5/src下。

修改config文件

LUAINC=-I/opt/ngx_openresty-1.9.3.1/build/lua-5.1.5/src

重新运行make&&make install 成功

再去检查下

INSTALL_TOP_SHARE=/opt/openresty/luajit/share/lua/5.1

INSTALL_TOP_LIB=/opt/openresty/luajit/lib/lua/5.1

这两个路径下socket库文件都已经存在了。

其实之前看http://www.linuxidc.com/Linux/2013-12/93516.htm的过程也提到了要修改LUAINC属性,只不过当时完全不知道这个是干嘛的就滑过去了,其实还是lua生的不行造成的~~~~~

opentesty--luasocket 安装的更多相关文章

  1. luasocket 安装记录 (FS1.4)

    说明:FS 1.4 使用的lua 5.2 ,需要使用luasocket 3.0 以上. 本文以FS 1.4 && luasocket 3.0 为基础,记录安装使用过程. 一.下载 &a ...

  2. luasocket 安装记录 (FS1.6)

    说明: 想通过Lua 脚本实现 http.默认 FS 的 mod_lua 中没有对socket 的支持,如下的操作为lua 添加 socket的支持. 一.下载 luasocket 包: # wget ...

  3. openresty nginx 安装过程记录

    转载请注明原始地址 http://www.cnblogs.com/dongxiao-yang/p/4877799.html 一 :系统版本 1 cat /etc/issue: CentOS relea ...

  4. lua 5.3.5 安装/初体验

    安装 官网http://www.lua.org/start.html 参考  https://blog.csdn.net/qq_23954569/article/details/70879672 cd ...

  5. luarocks 包管理工具

    安装方式:wget http://luarocks.org/releases/luarocks-2.2.2.tar.gz tar zxvf luarocks-2.2.2.tar.gz cd luaro ...

  6. lua第三方库

    一.Lua 包管理工具 1.LuaRocks luarocks 是Lua常用的包管理工具(还有一个是LuaDist),其安装方式请参考官网:https://luarocks.org/#quick-st ...

  7. lua redis接口 (在ubuntu16.04 环境下配置lua-redis开发环境)

    目前成功的lua版本是5.1, 根据网络上的资料显示 lua5.1能够支持 lua-socket 安装lua及相关软件: #安装lua5. #安装lua-socketxiangg sudo apt i ...

  8. 安装 LuaSocket

    如果你安装有 Lua 模块的安装和部署工具 -- LuaRocks,那么一条指令就能安装部署好 LuaSocket: luarocks install luasocket  

  9. luasocket编译安装遇到的坑

    由于需要获得本机的IP地址,所以需要 : local socket = require('socket') local server_hostname = socket.dns.gethostname ...

随机推荐

  1. alsa utils工具使用

    1.amixer用于控制设置 amixer [-c card] [cmd] ./amixer contents ./amixer cset ./amixer cget 2. aplay ./aplay ...

  2. Android JSON 解析库的使用 - Gson 和 fast-json

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...

  3. [Android分享] 彻底理解ldpi、mdpi、hdpi、xhdpi、xxhdpi

    来自: http://www.eoeandroid.com/thread-565562-1-1.html?_dsign=42bed080 非常感谢楼主分享 这个问题我相信困惑了好多人包括很多老鸟,而且 ...

  4. BAE Flask UEditor 使用七牛云

    1. 配置BAE支持七牛云的SDK BAE的python requirements当然不支持竞争对手了. 解决方法: 把qiniu这个文件包直接放置在你项目的目录中(与其他app同级) 运行会发现缺少 ...

  5. JS 获取各个宽度和高度

    IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.d ...

  6. C# 当double数值较大且小数位过多时转化成字符串并保留小数位

    今天在C#中碰到了一个问题,需要将double转换成字符串显示,要求保留小数位. 在网上查询了一下相关的文章 具体如下: double temp=3.1415926; (F)Fixed point:s ...

  7. animate基础

    用JQUERY做动画是很方便的,已经看过大牛们做出不逊色于FLASH的各种效果. 其中的基本功就有animate这个方法的使用.于是,从零开始,训练基本功: <body> <div ...

  8. ESXI转HYPER-V,问题接二连三啊(VMDK转VHD)

    首先说软件: 要不是用SCVMM来转的话,我用得最爽的还是WINIMAGE,自然流畅.其它的都有各种问题. 其次说说配置更改: 如果原ESXI里只有一个硬盘,一切好说,如果里面挂载了两个,甚至三个硬盘 ...

  9. Mysql中类似于nvl()函数的ifnull()函数

    IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2.IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境. mysq ...

  10. android 随手记 自定义广播通知栏

    自定义通知栏图标?不是很简单么.自定义布局都不在话下! 是的,有xml布局文件当然一切都很简单,如果不给你布局文件用呢? 听我慢慢道来! 首先怎么创建一个通知呢? 1.new 一个 Notificat ...