Linux系统安装Lua语言及Lua外部库

安装Lua 

 Lua语言是一种轻量级、高效且可扩展的脚本语言,具有简洁易学的语法和占用资源少的特点。它支持动态类型,提供了丰富的表达式和运算符,同时具备自动垃圾回收机制和跨平台性。Lua语言易于嵌入到其他应用程序中,并可与其他语言进行交互,因此在游戏开发、移动应用开发、嵌入式系统和网络服务等领域有着广泛的应用。

lua语言官方网站: The Programming Language Lua

在Linux系统安装Lua语言非常简洁,先更新软件列表:

sudo apt update

 安装Lua语言:

sudo apt install lua5.4

安装Lua语言开发相关的资源包,有了它以后开发者可以编写C/C++代码来扩展Lua的功能,实现一些在Lua脚本中难以实现或者效率较低的操作。

sudo apt-get install liblua5.4-dev

 验证下是否安装成功:

lua -v

 安装Lua包管理器luarocks(在/home家目录)

wget https://luarocks.org/releases/luarocks-3.11.1.tar.gz

解压压缩包 

tar zxpf luarocks-3.11.1.tar.gz

 安装相关配置

 ./configure && make && sudo make install

 在终端输入:

 lua

 经典的hello world

print("hello world")

在终端输入命令即可运行lua脚本:

lua hello.lua

安装外部的Lua库并搭建一个Web服务器

 Lua有时会用到luasql库操作数据库(目前是支持lua5.3),还有使用lua来编写Nginx服务器脚本,我这里是构建了一个简单的Web服务器:

使用luarocks安装lua的网络套接字库luasocket

sudo luarocks install luasocket

在Lua的交互页面输入命令即可导入luasocket包: 

require("socket")

 编写脚本并引入luasocket库,开启8080端口

local socket = require("socket")  
local server = socket.bind("*", 8080)  
local ip, port = server:getsockname()  
  
print("ip地址", ip, "端口", port)  
  
while true do  
    local client = server:accept()  
    client:settimeout(0)  
  
    local line, err = client:receive()  
    if not err then  
        print("Received line: ", line)  
  
        local response = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\nGay Away!!!!"  
        client:send(response)  
    end  
  
    client:close()  
end

运行成功后在浏览器输入    虚拟机或服务器的ip地址:8080   即可看到我们想输出的信息 

构建一个可以打开HTML文件的Web服务器

local socket = require("socket")  
local server = socket.bind("*", 8080)  
local ip, port = server:getsockname()  
local fs = require("io")  -- 用于文件操作  
  
print("服务器监听在 ip地址 ", ip, " 端口 ", port)  
  
while true do  
    local client = server:accept()  
    client:settimeout(0)  
  
    local line, err = client:receive()  
    if not err then  
        print("Received line: ", line)  
  
        -- 读取index.html文件的内容  
        local file, err = fs.open("index.html", "r")  
        if not err then  
            local content = file:read("*a") -- 读取文件所有内容  
            file:close()  
  
            -- 构造HTTP响应  
            local response = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n" .. content  
            client:send(response)  
        else  
            print("Error opening file: ", err)  
            local response = "HTTP/1.1 500 Internal Server Error\r\n\r\nError opening index.html"  
            client:send(response)  
        end  
    end  
  
    client:close()  
end

 运行成功:

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值