Linux下安装PHP的lua扩展库
一、安装Lua 5.3.4
下载
http://www.lua.org/ftp/lua-5.3..tar.gz tar xvf lua-5.3..tar.gz cd lua-5.3.
重要:进入解压缩后的路径 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.$ lua -v
Lua 5.3. Copyright (C) - 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..tgz tar xvf lua-2.0.3.tgz cd lua-2.0. phpize ./configure
编译、安装
tinywan@tinywan:~/lua-2.0.$ make
/bin/bash /home/tinywan/lua-2.0./libtool --mode=compile cc ... tinywan@tinywan:~/lua-2.0.$ sudo make install
/bin/bash /home/tinywan/lua-2.0./libtool --mode=install cp ./lua.la /home/tinywan/lua-2.0.3/modules
libtool: install: cp ./.libs/lua.so /home/tinywan/lua-2.0./modules/lua.so
libtool: install: cp ./.libs/lua.lai /home/tinywan/lua-2.0./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./modules
----------------------------------------------------------------------
Libraries have been installed in:
/home/tinywan/lua-2.0./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() and ld.so() manual pages.
----------------------------------------------------------------------
Installing shared extensions: /usr/lib/php//
查看lua.so 文件
tinywan@tinywan:/usr/lib/php/$ 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//lua.so tinywan@tinywan:/usr/lib/php/$ 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\n"));
$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"
Linux下安装PHP的lua扩展库的更多相关文章
- linux下安装php的lua扩展
1. 进入管理员权限使用yum安装 readline(也可以使用wget下载后./configure 然后 make && make install进行安装) yum install ...
- Linux下安装PHP的GD支持库
Linux下安装PHP的GD支持库 1.安装 zlib wget ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/zlib-1.2.3.tar.gz ...
- lua使用笔记2:Linux 中安装php的lua扩展
安装lua扩展的前提是lua已经安装好,如果没有安装,参照 1.http://pecl.php.net/package/lua 下载lua扩展 或者Linux下直接输入 wget http://pec ...
- windows下与linux下安装redis及redis扩展
1. Redis的介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起 ...
- Linux下安装Python3.x和第三方库
如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环境! 不要动现有 ...
- Linux下安装Python3.6和第三方库
如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环境! 一.安装p ...
- Linux下安装php的memcached扩展(memcache的客户端)
php的扩展memcache,不支持cas,所以我们要装memcached扩展,memcached扩展是基于libmemcached,所以要先安装libmemcached 一.下载软件 1.libme ...
- Linux下安装PHP的mcrypt扩展
首先下载,并安装 libmcrypt-2.5.8.tar.gz 下载地址: http://sourceforge.net/project/showfiles.php?group_id=87941&am ...
- linux 下安装PHP的IMAP扩展实现邮件收发
系统CentOS 6.5 PHP5.5.19 1.安装imap的依赖包: [root@iZ9482lp6yqZ]# yum install -y libc-client-* 没有安装编译错误提示: ...
随机推荐
- WebGL学习笔记(二)
目录 绘制多个顶点 使用缓冲区对象 类型化数组 使用drawArrays()函数绘制图形 图形的移动 图形的旋转 图形的缩放 绘制多个顶点 使用缓冲区对象 创建缓冲区对象 var vertexBuff ...
- Java网络编程一:基础知识详解
网络基础知识 1.OSI分层模型和TCP/IP分层模型的对应关系 这里对于7层模型不展开来讲,只选择跟这次系列主题相关的知识点介绍. 2.七层模型与协议的对应关系 网络层 ------------ ...
- 最新版ABP 动态WebAPI 日期转json带T的解决方案| ABP DateTIme Json format
ABP动态webapi返回的json数据中,日期时间带T还有毫秒数的问题,在以往的版本中可以使用下面方法解决: 在XXXAbpWebApiModule中加上下面的代码: 很老的很老的版本有效: pub ...
- 词频统计的java实现方法——第一次改进
需求概要 原需求 1.读取文件,文件内包可含英文字符,及常见标点,空格级换行符. 2.统计英文单词在本文件的出现次数 3.将统计结果排序 4.显示排序结果 新需求: 1.小文件输入. 为表明程序能跑 ...
- Acdream1311_Apple
无聊的时候看到上一次acdream群赛的一个题目,中间居然是有alice和bob的博弈题目,于是就去做了. 给n,m,两人轮流操作,每次操作可以使n+1,或者m+1,谁操作后满足nm>=A,那么 ...
- SPOJ_SUBLEX
经典题目:给一个字符串,求字典序第k小的子串是什么. 涉及子串问题,上自动机. 首先我们可以用记忆化搜索的方法,求出到达某一个状态后,能产生多少个新状态. 首先,到达这个状态就不走了,这肯定是一种状态 ...
- java 加载过程
1.main方法进入方法区 2.main方法进栈 3.调用xxx类加载到jvm中 类属性进入数据共享区,方法进入到方法区
- idea的protobuf使用
1.安装插件 2.添加依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&qu ...
- Java中的三目运算符可能出现的问题
你真的了解Java中的三目运算符吗? 原创 2018-04-27 刨根问底的 Hollis Hollis Hollis 微信号 hollischuang 功能介绍 一个对Coding有着独特追求的人. ...
- android:ellipsize属性的含义
android:ellipsize属性的含义http://blog.csdn.net/uyu2yiyi/article/details/6316310 跑马灯效果:http://www.liu-may ...