zoukankan      html  css  js  c++  java
  • lua curl动态链接库编译安装

    关于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/
    结果可以。好吧应该也能算一种方法吧。
  • 相关阅读:
    zabbix api
    pymssql
    ssh别名登录,非常适合从跳板机登录其他主机
    apache httpd 不记录head 的请求。
    mysqldump 参数--single-transaction
    Detect operating system [zabbix]
    mysql 审计server_audit 模块
    Execl矩阵如何转化成Pajek的net文件
    4、keepalived高可用nginx负载均衡
    3、使用keepalived高可用LVS实例演示
  • 原文地址:https://www.cnblogs.com/lrxing/p/3955036.html
Copyright © 2011-2022 走看看