zoukankan      html  css  js  c++  java
  • Linux下安装PHP的lua扩展库

    一、安装Lua 5.3.4

    下载

    http://www.lua.org/ftp/lua-5.3.4.tar.gz
    
    tar xvf lua-5.3.4.tar.gz
    
    cd lua-5.3.4

    重要:进入解压缩后的路径 cd .../lua-5.3.4/src 打开Makefile文件 在CFLAG一行 添加选项 -fPIC 像这样:

    找到源文件的这行替换掉

    CFLAGS= -O2 -Wall -DLUA_COMPAT_ALL $(SYSCFLAGS) -fPIC $(MYCFLAGS)

    然后编译、安装

     make linux 
     sudo make install

    执行完成后安装lua成功,可以查看lua 版本是否为刚安装的版本

    tinywan@tinywan:~/lua-5.3.4$ lua -v
    Lua 5.3.4  Copyright (C) 1994-2017 Lua.org, PUC-Rio

    查看 /usr/local/include/ 路径下是否有 lua.h, 为该头文件创建一个软链

    tinywan@tinywan:/usr/local/include$ ls 
    lauxlib.h  libssh2.h  libssh2_publickey.h  libssh2_sftp.h  luaconf.h  lua.h  lua.hpp  lualib.h
    tinywan@tinywan:/usr/local/include$ ln -s /usr/local/include/lua.h /usr/include/lua/lua.h
    ln: 无法创建符号链接'/usr/include/lua/lua.h': 没有那个文件或目录
    tinywan@tinywan:/usr/local/include$ ln -s /usr/local/include/lua.h /usr/include/lua/lua.h
    ln: 无法创建符号链接'/usr/include/lua/lua.h': 没有那个文件或目录
    tinywan@tinywan:/usr/local/include$ mkdir -P /usr/include/lua
    mkdir:无效选项 -- P
    Try 'mkdir --help' for more information.
    tinywan@tinywan:/usr/local/include$ mkdir -R /usr/include/lua
    mkdir:无效选项 -- R
    Try 'mkdir --help' for more information.
    tinywan@tinywan:/usr/local/include$ mkdir - /usr/include/lua
    mkdir: 无法创建目录"-": 权限不够
    mkdir: 无法创建目录"/usr/include/lua": 权限不够
    tinywan@tinywan:/usr/local/include$ sudo mkdir - /usr/include/lua
    tinywan@tinywan:/usr/local/include$ ln -s /usr/local/include/lua.h /usr/include/lua/lua.h
    ln: 无法创建符号链接'/usr/include/lua/lua.h': 权限不够
    tinywan@tinywan:/usr/local/include$ sudo ln -s /usr/local/include/lua.h /usr/include/lua/lua.h
    tinywan@tinywan:/usr/local/include$ 

    将 liblua.a 放到 /usr/lib 目录下,先查找liblua.a文件在哪个位置,一般是在/usr/local/lib/liblua.a

    tinywan@tinywan:/usr/local/include$ whereis liblua.a
    liblua: /usr/local/lib/liblua.a
    tinywan@tinywan:/usr/local/include$ cp /usr/local/lib/liblua.a /usr/lib/liblua.a
    cp: 无法创建普通文件'/usr/lib/liblua.a': 权限不够
    tinywan@tinywan:/usr/local/include$ sudo cp /usr/local/lib/liblua.a /usr/lib/liblua.a
    tinywan@tinywan:/usr/local/include$

    如果不安装lua,在./configured的时候提示一下错误信息

    configure: error: Please reinstall the lua distribution - lua.h should be in <lua-dir>/include/

    二、安装phplua 扩展

    wget http://pecl.php.net/get/lua-2.0.3.tgz

    tar xvf lua-2.0.3.tgz cd lua
    -2.0.3 phpize ./configure

    编译、安装

    tinywan@tinywan:~/lua-2.0.3$ make
    /bin/bash /home/tinywan/lua-2.0.3/libtool --mode=compile cc ...
    
    tinywan@tinywan:~/lua-2.0.3$ sudo make install
    /bin/bash /home/tinywan/lua-2.0.3/libtool --mode=install cp ./lua.la /home/tinywan/lua-2.0.3/modules
    libtool: install: cp ./.libs/lua.so /home/tinywan/lua-2.0.3/modules/lua.so
    libtool: install: cp ./.libs/lua.lai /home/tinywan/lua-2.0.3/modules/lua.la
    libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/sbin" ldconfig -n /home/tinywan/lua-2.0.3/modules
    ----------------------------------------------------------------------
    Libraries have been installed in:
       /home/tinywan/lua-2.0.3/modules
    
    If you ever happen to want to link against installed libraries
    in a given directory, LIBDIR, you must either use libtool, and
    specify the full pathname of the library, or use the '-LLIBDIR'
    flag during linking and do at least one of the following:
       - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
         during execution
       - add LIBDIR to the 'LD_RUN_PATH' environment variable
         during linking
       - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
       - have your system administrator add LIBDIR to '/etc/ld.so.conf'
    
    See any operating system documentation about shared libraries for
    more information, such as the ld(1) and ld.so(8) manual pages.
    ----------------------------------------------------------------------
    Installing shared extensions:     /usr/lib/php/20151012/

    查看lua.so 文件

    tinywan@tinywan:/usr/lib/php/20151012$ ls
    build        ctype.so  exif.so      ftp.so      iconv.so  lua.so

    修改PHP 配置文件

    sudo vim /etc/php/7.0/cli/php.ini
    #添加一下内容
    extension=/usr/lib/php/20151012/lua.so
    
    tinywan@tinywan:/usr/lib/php/20151012$ php -m | grep lua
    lua

    安装完毕

    三、测试

    文件test_lua.php

    <?php
    $lua = new Lua();
    $lua->eval(<<<CODE
        function dummy(foo, bar)
            print(foo, ",", bar)
        end
    CODE
    );
    $lua->call("dummy", array("Lua", "geiliable
    "));
    $lua->dummy("Lua", "geiliable"); // __call()
    var_dump($lua->call(array("table", "concat"), array(array(1=>1, 2=>2, 3=>3), "-")));
    ?>

    执行结果:

    tinywan@tinywan:~/PHP7$ php test_lua.php 
    Lua,geiliable
    Lua,geiliablestring(11) "1.0-2.0-3.0"
  • 相关阅读:
    个人总结
    再见,我的伪算法竞赛生涯。
    C语言实现迷宫小游戏
    关于第九届蓝桥杯决赛
    蓝桥杯近3年决赛题之3(17年b组)
    蓝桥杯近3年决赛题之二(16年b组)
    蓝桥杯近三年决赛题之一(15年B组)
    第九届蓝桥杯C/C++B组省赛感想
    读书笔记《程序员的自我修养—链接、装载与库》
    蓝桥杯近3年初赛题之三(17年b组)
  • 原文地址:https://www.cnblogs.com/tinywan/p/6813646.html
Copyright © 2011-2022 走看看