linux上lua版本的替换和luasocket的安装和使用

目录

  • 前言
  • 版本信息
  • 替换linux lua
  • 安装luasocket
  • 推送
  • 结语

前言

最近想在linux搭建一个lua的socket服务端,发现在centos7上lua没有socket库的支持,所以自己安装一下,为了保持和windows上的开发一直,所以需要把linux上的lua版本替换成和windwos的一直,碰到些许问题,记录以备不时之需

版本信息

  • linux-lua-version:5.1.4
  • windows-lua-version:5.1.5
  • linux-luasocket-version:2.0.2

替换linux lua

  • 创建一个新目录

mkdir /var/lua

  • 移动到新目录

cd /var/lua

  • 下载lua版本

curl -R -O http://www.lua.org/ftp/lua-5.1.5.tar.gz

  • 安装lua

tar xf lua-5.1.5.tar.gz
cd lua-5.1.5
make linux test

  • 安装readline(make linux失败)

这一步是上一步mask linux有报错再看,博主在make linux有报错,如下所示,这里安装一下readline
yum install -y readline-devel
重新maske linux

lua.c:82:31: error: readline/readline.h: No such file or directory
lua.c:83:30: error: readline/history.h: No such file or directory
lua.c: In function ‘pushline’:
lua.c:312: warning: implicit declaration of function ‘readline’
lua.c:312: warning: assignment makes pointer from integer without a cast
lua.c: In function ‘addreturn’:
lua.c:339: warning: implicit declaration of function ‘add_history’
  • 删除原来的lua

rm -rf /usr/bin/lua

  • 建立一个软连接指向新的lua

ln -s /var/lua/lua-5.1.5/src/lua /usr/bin/lua

安装luasocket

  • 新建一个目录

mkdir /var/luasocket

  • 切换工作目录

cd /var/luasocket

  • 下载luasocket

wget http://files.luaforge.net/releases/luasocket/luasocket/luasocket-2.0.2/luasocket-2.0.2.tar.gz

  • 解压缩

tar -xzvf luasocket-2.0.2.tar.gz

  • 修改config文件

cd luasocket-2.0.2
vim config

LUAINC=-I/var/lua/lua-5.1.5/src
路径是自己lua文件下src,目的是安装的时候能够找到lua.h文件

INSTALL_TOP_SHARE=/usr/share/lua/5.1
INSTALL_TOP_LIB=/usr/lib64/lua/5.1
上边两行改成默认lua的核心库的位置

  • 安装

make & make install
输出如下所示就是成功了

[root@VM-8-15-centos luasocket-2.0.2]# make
cd src; make all
make[1]: Entering directory `/var/luasocket/luasocket-2.0.2/src'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/var/luasocket/luasocket-2.0.2/src'
[root@VM-8-15-centos luasocket-2.0.2]# make install
cd src; make all
make[1]: Entering directory `/var/luasocket/luasocket-2.0.2/src'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/var/luasocket/luasocket-2.0.2/src'
cd src; mkdir -p /usr/share/lua/5.1
cd src; cp ltn12.lua socket.lua mime.lua /usr/share/lua/5.1
cd src; mkdir -p /usr/share/lua/5.1/socket
cd src; cp http.lua url.lua tp.lua ftp.lua smtp.lua /usr/share/lua/5.1/socket
cd src; mkdir -p /usr/lib64/lua/5.1/socket
cd src; cp socket.so.2.0.2  /usr/lib64/lua/5.1/socket/core.so
#cd src; mkdir -p /usr/share/lua/5.1/mime
#cd src; cp  /usr/share/lua/5.1/mime
cd src; mkdir -p /usr/lib64/lua/5.1/mime
cd src; cp mime.so.1.0.2 /usr/lib64/lua/5.1/mime/core.so

  • 问题报错

在require(“socket”)的时候依然找不到socket,报错如下

> require("socket")
stdin:1: module 'socket' not found:
	no field package.preload['socket']
	no file './socket.lua'
	no file '/usr/local/share/lua/5.1/socket.lua'
	no file '/usr/local/share/lua/5.1/socket/init.lua'
	no file '/usr/local/lib/lua/5.1/socket.lua'
	no file '/usr/local/lib/lua/5.1/socket/init.lua'
	no file './socket.so'
	no file '/usr/local/lib/lua/5.1/socket.so'
	no file '/usr/local/lib/lua/5.1/loadall.so'
stack traceback:
	[C]: in function 'require'
	stdin:1: in main chunk
	[C]: ?

从报错发现,lua找的usr/local/lib/lua/5.1和usr/local/share/lua/5.1的路径,这个和我们刚才安装luasocket的路径不一样,luasocket的路径是usr/lib/lua/5.1和usr/share/lua/5.1,我们把安装好的东西移过去就好了

mv lib/lua local/lib/lua
mv share/lua local/share/lua

推送

Github:https://github.com/KingSun5

结语

希望看到最后的同学有所收获,若是觉得博主的文章写的不错,不妨关注一下博主,点赞一下博文,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。
QQ交流群:806091680(Chinar)
该群为CSDN博主Chinar所创,推荐一下!我也在群里!
本文属于原创文章,转载请著名作者出处并置顶!!

你可能感兴趣的:(Linux学习笔记,lua学习笔记,lua,linux,开发语言)