关于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. 差别不在英语水平,而在汉语水平If you do not leave me, we will die together.

    为什么高考语文要提高到180分,英语降到100,差别不在英语水平,而在汉语水平.看下面例句的译法: If you do not leave me, we will die together. 你如果不 ...

  2. SRM 404(1-250pt, 1-500pt)

    DIV1 250pt 题意:对于1-9数字三角形如下图,设其为a[i][j],则a[i][j] = (a[i-1][j] + a[i-1][j+1]) % 10.现在对于某个数字三角形, 每行告诉你某 ...

  3. 【安卓】给ViewFlipper加指示器,相似ViewPagerIndicator库提供的那种、!

    思路: 1.viewPager有setOnPageChangeListener能够监听切换动作,但viewFlipper却死活没类似的东西.! 此处有一个变种思路,基于animation,animat ...

  4. Android URI简单介绍

    就Android平台而言,URI主要分三个部分:scheme, authority and path.当中authority又分为host和port.格式例如以下: scheme://host:por ...

  5. searchbar的使用介绍

    searchBar的使用介绍 首先如何创建一个SearchBar实例: self.searchBar = [[UISearchBar alloc] initWithFrame: CGRectMake( ...

  6. [转] 不要被C++“自动生成”所蒙骗

    http://www.cnblogs.com/fanzhidongyzby/archive/2013/01/12/2858040.html C++对象可以使用两种方式进行创建:构造函数和复制构造函数. ...

  7. UIDevice 系统信息详解

    获取当前设备    //获取当前设备    UIDevice *dev = [UIDevice currentDevice]; 设备和系统基本信息    NSLog(@"设备名称:%@&qu ...

  8. Android Studio学习随笔-模拟耗时操作(sleep)

    在这里我申明一点,因为我是挂着VPN去YOUTOBE看的尚学堂的高明鑫老师讲的Android基础学习视频,有些东西他没有讲,而我也没办法,只能等两个星期后学校请老师来的时候进行询问,当然我也会将一些问 ...

  9. Android Studio学习随笔-基本事件(点击)

    最常见的点击事件有三种创建方法,在MainActivity.java的onCreate函数(在启动程序是优先运行的程序)中创建setOnClickListener(动态运行)(最常见) protect ...

  10. 在Ubuntu上安装使用Systemtap

    因为最近开始学习Nginx,在网上看到别人介绍了一款强大的内核探测工具Systemtap,于是便准备学习下这款探测工具为以后代码分析做准备. 第一步便是安装.在自己电脑上安装的时候,也是费了一番劲儿. ...