关于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. bzoj 1089 [SCOI2003]严格n元树(DP+高精度)

    1089: [SCOI2003]严格n元树 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1250  Solved: 621[Submit][Statu ...

  2. 区别assign VS weak,__block VS __weak

    在objective-c中,类中的全局变量经常使用如下的方式申明. @property(nonatomic(1),strong(2))UIImageView *imageView; 其中的1,2处是对 ...

  3. @protocol 和 category 中如何使用 @property

    出题者简介: 孙源(sunnyxx),目前就职于百度 整理者简介:陈奕龙(子循),目前就职于滴滴出行. 转载者:豆电雨(starain)微信:doudianyu 在 protocol 中使用 prop ...

  4. the identity used to sign the executable is no longer valid.解决方法

    the identity used to sign the executable is no longer valid.解决方法 一.重新下载Provisioning Profile 1.到devel ...

  5. 来自投资银行的20个Java面试题

    问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你在一个线程里初始化了一个 ...

  6. 宇宙【全7季】【合集】【蓝光1080P】【历史频道】

    http://www.bilibili.com/video/av4343074/ 挺好看的 还有一部<宇宙时空之旅>也是挺好看的.

  7. Atom 编辑器 前端基本插件

    Atom 编辑器插件 这个编辑器是github出品,现在处于免费试用期:如果是初学者,可以使用这个编辑器,插件安装很方便,只需要点菜单栏的File-Settings-Install,在搜索框中输入想要 ...

  8. A_star poj2449 k短路

    赛后填坑系列QAQ 贴代码呀 #include<iostream> #include<algorithm> #include<cstdio> #include< ...

  9. 命令行修复MBR分区

    命令行修复MBR 1.shift+F10打开命令行 2.输入:diskpart 3.输入:list disk 查看磁盘信息 4.选择你要操作的磁盘:select disk 0 5.输入:clean,清 ...

  10. BAT染指影视制作 欲全面撬开互联网粉丝经济

    预測: 或靠"用户"模式盈利 除了内容制作,电影发行也在遭遇互联网模式的冲击. 除了给片方支付高额保底以外,随着市场竞争激烈.新进入者都在争夺好片的发行权. 业内预測.再往后,发行 ...