一、安装Lua 5.3.4

下载

  1. http://www.lua.org/ftp/lua-5.3..tar.gz
  2.  
  3. tar xvf lua-5.3..tar.gz
  4.  
  5. cd lua-5.3.

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

找到源文件的这行替换掉

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

然后编译、安装

  1. make linux
  2. sudo make install

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

  1. tinywan@tinywan:~/lua-5.3.$ lua -v
  2. Lua 5.3. Copyright (C) - Lua.org, PUC-Rio

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

  1. tinywan@tinywan:/usr/local/include$ ls
  2. lauxlib.h libssh2.h libssh2_publickey.h libssh2_sftp.h luaconf.h lua.h lua.hpp lualib.h
  3. tinywan@tinywan:/usr/local/include$ ln -s /usr/local/include/lua.h /usr/include/lua/lua.h
  4. ln: 无法创建符号链接'/usr/include/lua/lua.h': 没有那个文件或目录
  5. tinywan@tinywan:/usr/local/include$ ln -s /usr/local/include/lua.h /usr/include/lua/lua.h
  6. ln: 无法创建符号链接'/usr/include/lua/lua.h': 没有那个文件或目录
  7. tinywan@tinywan:/usr/local/include$ mkdir -P /usr/include/lua
  8. mkdir:无效选项 -- P
  9. Try 'mkdir --help' for more information.
  10. tinywan@tinywan:/usr/local/include$ mkdir -R /usr/include/lua
  11. mkdir:无效选项 -- R
  12. Try 'mkdir --help' for more information.
  13. tinywan@tinywan:/usr/local/include$ mkdir - /usr/include/lua
  14. mkdir: 无法创建目录"-": 权限不够
  15. mkdir: 无法创建目录"/usr/include/lua": 权限不够
  16. tinywan@tinywan:/usr/local/include$ sudo mkdir - /usr/include/lua
  17. tinywan@tinywan:/usr/local/include$ ln -s /usr/local/include/lua.h /usr/include/lua/lua.h
  18. ln: 无法创建符号链接'/usr/include/lua/lua.h': 权限不够
  19. tinywan@tinywan:/usr/local/include$ sudo ln -s /usr/local/include/lua.h /usr/include/lua/lua.h
  20. tinywan@tinywan:/usr/local/include$

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

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

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

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

二、安装phplua 扩展

  1. wget http://pecl.php.net/get/lua-2.0..tgz
  2.  
  3. tar xvf lua-2.0.3.tgz
  4.  
  5. cd lua-2.0.
  6.  
  7. phpize
  8.  
  9. ./configure

编译、安装

  1. tinywan@tinywan:~/lua-2.0.$ make
  2. /bin/bash /home/tinywan/lua-2.0./libtool --mode=compile cc ...
  3.  
  4. tinywan@tinywan:~/lua-2.0.$ sudo make install
  5. /bin/bash /home/tinywan/lua-2.0./libtool --mode=install cp ./lua.la /home/tinywan/lua-2.0.3/modules
  6. libtool: install: cp ./.libs/lua.so /home/tinywan/lua-2.0./modules/lua.so
  7. libtool: install: cp ./.libs/lua.lai /home/tinywan/lua-2.0./modules/lua.la
  8. 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./modules
  9. ----------------------------------------------------------------------
  10. Libraries have been installed in:
  11. /home/tinywan/lua-2.0./modules
  12.  
  13. If you ever happen to want to link against installed libraries
  14. in a given directory, LIBDIR, you must either use libtool, and
  15. specify the full pathname of the library, or use the '-LLIBDIR'
  16. flag during linking and do at least one of the following:
  17. - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
  18. during execution
  19. - add LIBDIR to the 'LD_RUN_PATH' environment variable
  20. during linking
  21. - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
  22. - have your system administrator add LIBDIR to '/etc/ld.so.conf'
  23.  
  24. See any operating system documentation about shared libraries for
  25. more information, such as the ld() and ld.so() manual pages.
  26. ----------------------------------------------------------------------
  27. Installing shared extensions: /usr/lib/php//

查看lua.so 文件

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

修改PHP 配置文件

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

安装完毕

三、测试

文件test_lua.php

  1. <?php
  2. $lua = new Lua();
  3. $lua->eval(<<<CODE
  4. function dummy(foo, bar)
  5. print(foo, ",", bar)
  6. end
  7. CODE
  8. );
  9. $lua->call("dummy", array("Lua", "geiliable\n"));
  10. $lua->dummy("Lua", "geiliable"); // __call()
  11. var_dump($lua->call(array("table", "concat"), array(array(1=>1, 2=>2, 3=>3), "-")));
  12. ?>

执行结果:

  1. tinywan@tinywan:~/PHP7$ php test_lua.php
  2. Lua,geiliable
  3. Lua,geiliablestring(11) "1.0-2.0-3.0"

Linux下安装PHP的lua扩展库的更多相关文章

  1. linux下安装php的lua扩展

    1. 进入管理员权限使用yum安装 readline(也可以使用wget下载后./configure 然后 make && make install进行安装) yum install ...

  2. Linux下安装PHP的GD支持库

    Linux下安装PHP的GD支持库   1.安装 zlib  wget ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/zlib-1.2.3.tar.gz ...

  3. lua使用笔记2:Linux 中安装php的lua扩展

    安装lua扩展的前提是lua已经安装好,如果没有安装,参照 1.http://pecl.php.net/package/lua 下载lua扩展 或者Linux下直接输入 wget http://pec ...

  4. windows下与linux下安装redis及redis扩展

    1.        Redis的介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起 ...

  5. Linux下安装Python3.x和第三方库

    如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环境! 不要动现有 ...

  6. Linux下安装Python3.6和第三方库

    如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环境! 一.安装p ...

  7. Linux下安装php的memcached扩展(memcache的客户端)

    php的扩展memcache,不支持cas,所以我们要装memcached扩展,memcached扩展是基于libmemcached,所以要先安装libmemcached 一.下载软件 1.libme ...

  8. Linux下安装PHP的mcrypt扩展

    首先下载,并安装 libmcrypt-2.5.8.tar.gz 下载地址: http://sourceforge.net/project/showfiles.php?group_id=87941&am ...

  9. linux 下安装PHP的IMAP扩展实现邮件收发

    系统CentOS 6.5 PHP5.5.19 1.安装imap的依赖包: [root@iZ9482lp6yqZ]# yum install -y libc-client-*  没有安装编译错误提示: ...

随机推荐

  1. JAVA 对象序列化——Serializable

    1.序列化是干什么的?       简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存object st ...

  2. 二级制包安装Tomcat 与 RPM包安装Tomcat

    1:下载二级制包 wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.0.47/bin/apache-tomcat-8.0.47.tar.g ...

  3. 个人作业-week2(代码复审)

    一.代码复审check list 概要部分 代码符合需求和规格说明吗? 符合要求和规格说明,-s指令和-c指令都能实现需求.并且能够处理非法输入. 代码设计是否有周全的考虑? 程序的main函数中对各 ...

  4. PAT 1042 字符统计

    https://pintia.cn/problem-sets/994805260223102976/problems/994805280817135616 请编写程序,找出一段给定文字中出现最频繁的那 ...

  5. 性能分析_linux服务器CPU_CPU利用率

    CPU度量 1.  指标范围 1.1  User mode CPU utilization+ System mode CPU utilization 合理值:60-85%,如果在一个多用户系统中us+ ...

  6. php curl常用的5个例子

    转载:http://www.jb100.net/html/content-22-821-1.html php curl常用的5个例子   我用php ,curl主要是抓取数据,当然我们可以用其他的方法 ...

  7. Centos/Fedora下安装Twisted,failed with error code 1 in /tmp/pip-build-H1bj8E/twisted/解决方法

    Python踩坑之路 pip/easy_install无法安装Twisted或者安装后无法导入Twisted 看到MM网站上很多图,想用Scrapy框架爬点图,遇到各种库的问题,蛋疼. 一直twist ...

  8. linux中inittab文件详解

    init的进程号是1(ps -aux | less),从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序. init程序需要读取配置文件/etc/ ...

  9. springboot整合spring @Cache和Redis

    转载请注明出处:https://www.cnblogs.com/wenjunwei/p/10779450.html spring基于注解的缓存 对于缓存声明,spring的缓存提供了一组java注解: ...

  10. P4611 [COCI2011-2012#7] TRAMPOLIN

    题目背景 有很多超级英雄:蝙蝠侠,蜘蛛侠,超人等.其中,有一位叫牛.今天他想模仿蜘蛛侠,所以他选择了一排高大的摩天楼来跳. 题目描述 具体而言,他选择了一个由 N 个摩天大楼构成的序 列,从左到右编号 ...