关于lua curl的资料网上并不是很多。找来找去就那么几个,所以我绝得很有必要把我的经验记下来,以防下次忘记
                                                                                                                                         ---好记性不如烂笔头。
如果在网上(当然是Google)搜索挂关键字“lua curl”或“luacurl”,你搜索的头两条数据很可能是不一样。因为关于lua的curl库有两个:luacurl和Lua-cURL。
如果你打开了这个网址“http://curl.haxx.se/libcurl/lua/”,你就会看这样一段话:

There are two different efforts:

  1. luacurl adopts the easy interface
  2. Lua-cURL is aiming for a full-fledged libcurl binding (easy/multi/share interface) to the functionality of Lua

Credits
luacurl is written by Alexander Marinov and Enrico Tassi

Lua-cURL is written by J�rgen H�tzel

一、安装Lua-cURL

看着好像是两条但是其实有三个版本:这里我们先说说第二个-----Lua-cURL。

这里有两个选择:

这里我选的git上的源码,因为我发现git上的更新一点。git上的最新版本是0.2.3,luaforge上最新的是0.2。具体步骤如下:
==================安装cURL==================
# tar zxf 0.2.3
# cd lua-curl-0.2.3
# cmake directory      //(directory为CMakeList.txt所在目录)
# export LUA_INCLUDE_DIR=/usr/include/lua5.1
# make  CC=gcc
# make install CC=gcc
安装以后会在当前目录下生成cURL.so的动态链接库,将它复制到相应的目录,下面是我的目录:
# cp cURL.so /usr/local/lib/lua/5.1/
这样在lua中直接使用require("cURL");就可以。
 
二、安装luacurl——lua-curl-0.3.0

为什么说看着是两个版本,其实是三个呢,因为luacurl有两个版本:

这两个分别对应的最新版Linux版本是:luacurl-1.2.1lua-curl_0.3.0.orig.tar.gz
先说lua-curl_0.3.0,具体步骤如下:
# tar zxf lua-curl_0.3.0.orig.tar.gz
# cd lua-curl-0.3.0
# make
# make install
这里其实我在执行make命令的时候遇到了不少问题。最重要的一个问题就是没有lua5.1.pc,错误提示如下:
 
Package lua5.1 was not found in the pkg-config search path. 
Perhaps you should add the directory containing `lua5.1.pc'
to the PKG_CONFIG_PATH environment variable
No package 'lua5.1' found
 
提示的意思是缺少lua5.1.pc这个文件,至于什么是*.pc文件,请参考这里解决这个问题最主要就是先查看系统中是否已有lua.pc这个文件,一般在/usr/lib/pkgconfig或/usr/lib64/pkgconfig,如果发现没有这个的话,在centos下可以使用如下命令查看那些安装包支持lua.pc:
# yum provides \*/lua.pc
通常会列出几个选项,同时会显示安装完以后,lua.pc会在哪个目录下。这里列出的安装包应该是lua-devel几个不同的版本。选第一个就行,安装完以后,相应的目录下应该就会有lua.pc了。然后在当前目录建立lua.pc的软连接:
# ln -s lua.pc lua5.1.pc
这样就不会出现这个问题了,但是第二个问题出现了:
 
libtool --silent --tag=CC --mode=link cc \
                -rpath -o liblua5.1-curl.la \
                -version-info 0:0:0 \
                -lcurl lua-curl.lo luabind.lo
libtool: link: only absolute run-paths are allowed
make: *** [liblua5.1-curl.la] 错误 1
 
“libtool: link: only absolute run-paths are allowed ”这句话描述的是执行libtool的时候,-rpath后面的路径必须是绝对路径才行。我查看了一下原来的Makefile里是这样写的:
 
注意这里处于选中状态的LUA_RPATH的位置,在上面的错误提示中,此处正好是空,所以这里需要一个绝对路径,具体应该写什么路径呢,看这里:
红色方框中的意思是要将存放*.so的目录赋给LUA_RPATH,所以这里我写的是
LUA_RPATH:=/usr/local/lib/lua/5.1/
将这一行放在lua50 stuff的endif的后面:
进行完以上操作,就可以顺利的执行make和make install了。执行完make install后,会在刚才设置得LUA_RPATH目录下看到一个软连接
这样就安装完成了。
 
 三、安装luacurl——luacurl-1.2.1
 
 其实说到luacurl-1.2.1的编译安装,基本上全是泪啊,各种不给力啊。
方法一:
luacurl-1.2.1解压后只有两个文件:luacurl.c和CMakeLists.txt。所以只能使用cmake ./来执行,但是我在执行完# cmake ./    # make   #make install 以后并没有发现有动态链接库库*.so文件生成,更不要说应该有的luacurl.so了。我这里行不通!
方法二:
第二种方法其实不应该叫做一种方法,应该是一种取巧的方式,我在加压后的luadist安装包的lib/lua目录下找到了我所需要的luacurl.so文件,于是就拷贝之:
# cp lib/lua/luacurl.so /usr/local/lib/lua/5.1/
结果可以。好吧应该也能算一种方法吧。

lua curl动态链接库编译安装的更多相关文章

  1. lua curl动态链接库编译安装(二)

    下面再介绍一下lua-curl中的lua-curl-0.2.tar.gz版本的安装方法,可能对于一般的人来说这个很简单,但是对于我们这些菜鸟来说就不一样了: # wget http://files.l ...

  2. luasocket编译安装遇到的坑

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

  3. centos 7编译安装php7

    0.下载php源代码 http://www.php.net/releases/ 1.配置编译环境 yum install -y gcc gcc++ libxml2-devel openssl open ...

  4. vim编译安装+lua模块

    vim编译安装+lua模块 使用背景:代码自动补全插件,需要安装lua模块 安装准备,首先下载安装vim所依赖的其它安装包,ncurses,lua,readline,vim 源码下载,编译安装 ncu ...

  5. nginx编译安装支持lua脚本

    一.准备编译环境 1.操作系统:CentOS7.6 2.安装编译所需安装包 yum install gcc pcre pcre-devel zlib zlib-devel openssl openss ...

  6. linux下编译安装curl

    linux下编译安装curl 1.下载curl git clone https://github.com/curl/curl.git 2.在curl目录下生成configure文件 ./buldcon ...

  7. mac下Nginx+lua模块编译安装

    Nginx的nb之处就不说了,lua也是一个小巧的脚本语言,由标准C编写而成,几乎可以运行在所有的平台上,也非常强大,其他特性请自行度娘.nginx_lua_module是由淘宝的工程师清无(王晓哲) ...

  8. Linux 编译安装 php 扩展包 curl

    php源码目录:/root/php php编译目录:/usr/local/webserver/php/ curl源码目录:/root/curl 1.curl,主要用于发送http请求,是php的一个扩 ...

  9. centos7.6编译安装php7.2.11及redis/memcached/rabbitmq/openssl/curl等常见扩展

    centos7.6编译安装php7..11及redis/memcached/rabbitmq/openssl/curl等常见扩展 获取Php的编译参数方法: [root@eus-api-cms-bac ...

随机推荐

  1. 《algorithm puzzles》——谜题

    这篇文章开始正式<algorithm puzzles>一书中的解谜之旅了! 狼羊菜过河: 谜题:一个人在河边,带着一匹狼.一只羊.一颗卷心菜.他需要用船将这三样东西运至对岸,然而,这艘船空 ...

  2. 常用Application Server

    综述,我们这里列出的application server应用服务器,主要是对servlet和JSP提供了良好的支持; [resin] [Tomcat] [jboss] community.jboss. ...

  3. Linux内存寻址之分段机制

    前言 最近在学习Linux内核,读到<深入理解Linux内核>的内存寻址一章.原本以为自己对分段分页机制已经理解了,结果发现其实是一知半解.于是,查找了很多资料,最终理顺了内存寻址的知识. ...

  4. Thinkphp分页时查询条件保存方法

    web应用中经常要根据用户提交的查询条件进行过滤,再以列表方式显示在浏览器上.如果这种查询是多种条件的组合,并要进行分页显示,则如何在分页导航中保持查询条件,是必须解决的问题. 在Thinkphp中, ...

  5. Oracle Locks之DML锁

    Oracle通过锁来实现数据库的并发控制 Oracle Database automatically locks a resource on behalf of a transaction to pr ...

  6. 让大蛇(Python)帮你找工作 之增强版

    前一段时间用Python写了个简单的网络爬虫,可以从某个求职网站上根据预先设置的条件一次性的爬取所有的职位信息,最近对该程序进行了一下完善,主要包括如下内容 (1)可以对爬取的结果再进行筛选 例如,你 ...

  7. 高效实现 std::string split() API

    Qt下一个 QString 实现split()性能.和std::string未实现它的.STL也未实现.只有自己可以写一. #include <string> #include <v ...

  8. [转] 用PDB库调试Python程序

    Python自带的pdb库,发现用pdb来调试程序还是很方便的,当然了,什么远程调试,多线程之类,pdb是搞不定的. 用pdb调试有多种方式可选: 1. 命令行启动目标程序,加上-m参数,这样调用my ...

  9. 自己编写SqlHelper

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  10. MySQL+PHP配置 Windows系统IIS版(转)

    1.下载 MySQL下载地址:http://dev.mysql.com/downloads/mysql/5.1.html->Windows (x86, 32-bit), MSI Installe ...