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"
  • 相关阅读:
    联想 Vibe Shot(Z90-3) 免recovery 获取ROOT权限 救砖 VIBEUI V3.1_1625
    联想 Z5S(L78071)免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 10.5.370
    联想 Z5(L78011) 免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 10.5.254
    联想 S5 Pro(L78041)免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 5.0.123
    第二阶段 冲刺八
    第二阶段 冲刺七
    第二阶段 冲刺六
    第二阶段 冲刺五
    代码大全阅读笔记03
    学习进度十二
  • 原文地址:https://www.cnblogs.com/tinywan/p/6813646.html
Copyright © 2011-2022 走看看