当前位置: 首页 > news >正文

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

 运行成功:

相关文章:

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

安装Lua Lua语言是一种轻量级、高效且可扩展的脚本语言,具有简洁易学的语法和占用资源少的特点。它支持动态类型,提供了丰富的表达式和运算符,同时具备自动垃圾回收机制和跨平台性。Lua语言易于嵌入到其他应用程序中,并可与其他语…...

前端技术栈学习:Vue2、Vue cli脚手架、ElementUI组件库、Axios

1 基本介绍 (1)Vue 是一个前端框架, 易于构建用户界面 (2)Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或项目整合 (3)支持和其它类库结合使用 (4&#…...

pycharm中取消Typo:In word ‘xxx‘提示(绿色波浪线提示)的方法

#事故现场 使用pycharm写python代码出现绿色波浪线的提示,并提示Typo:In word ‘xxx’,这是pycharm检测到单词拼写错误、不规范; 那如何取消这种提示呢? #解决方法 方法一:Settings → Editor → Inspections → P…...

js中的浅拷贝和深拷贝

浅拷贝Shallow Copy 浅拷贝只复制对象的顶层属性及其引用,而不复制这些引用所指向的对象。如果原始对象中的某个属性是一个对象或数组,那么浅拷贝后的对象将包含对这个内部对象或数组的引用,而不是这个对象或数组的一个新副本。 let obj1 …...

【Linux】常用基本命令

wget网址用于直接从网上下载某个文件到服务器,当然也可以直接从网上先把东西下到本地然后用filezilla这个软件来传输到服务器上。 当遇到不会的命令时候,可以使用man “不会的命令”来查看这个命令的详细信息。比如我想要看看ls这个命令的详细用法&…...

uniapp——上传图片获取到file对象而非临时地址——基础积累

最近在看uniapp的代码,遇到一个需求,就是要实现上传图片的功能 uniapp 官网地址:https://uniapp.dcloud.net.cn/ 上传图片有对应的API: uni.chooseImage方法:https://uniapp.dcloud.net.cn/api/media/image.html#choo…...

vue3 antdv RadioButton默认值选择问题处理

1、先上官方文档&#xff1a; Ant Design Vue — An enterprise-class UI components based on Ant Design and Vue.js 官方代码&#xff1a; <template><div><div><a-radio-group v-model:value"value1"><a-radio-button value"a…...

最佳实践,一款基于 Flutter 的桌面应用

前言 这篇文章介绍作为一名后端开发人员&#xff0c;快速的入门前端或者客户端一些相关的技术的心得。先来说说为什么作为一名后端开发人员也需要学习一些前端或者客户端相关的技术。通常来说&#xff0c;深耕一个领域没有错&#xff0c;因为社会常常就是这样分工的&#xff0…...

python第一个多进程爬虫

使用 multiprocessing 模块实现多进程爬取股票网址买卖数据的基本思路是&#xff1a; 定义爬虫函数&#xff0c;用于从一个或多个股票网址上抓取数据。创建多个进程&#xff0c;每个进程执行爬虫函数&#xff0c;可能针对不同的股票或不同的网页。使用 multiprocessing.Queue …...

在Ubuntu 18.04上安装和配置Ansible的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 配置管理系统旨在简化对大量服务器的控制&#xff0c;适用于管理员和运维团队。它们允许您从一个中央位置以自动化的方式控制许多…...

【详细教程】如何使用YOLOv10进行图片与视频的目标检测

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…...

LLM大语言模型-AI大模型全面介绍

简介&#xff1a; 大语言模型&#xff08;LLM&#xff09;是深度学习的产物&#xff0c;包含数十亿至数万亿参数&#xff0c;通过大规模数据训练&#xff0c;能处理多种自然语言任务。LLM基于Transformer架构&#xff0c;利用多头注意力机制处理长距离依赖&#xff0c;经过预训…...

瑜伽馆管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;教练管理&#xff0c;用户管理&#xff0c;瑜伽管理&#xff0c;套餐管理&#xff0c;体测报告管理&#xff0c;基础数据管理 前台账户功能包括&#xff1a;系统首页&#xff0…...

JAVA【案例5-2】模拟默认密码自动生成

【模拟默认密码自动生成】 1、案例描述 本案例要求编写一个程序&#xff0c;模拟默认密码的自动生成策略&#xff0c;手动输入用户名&#xff0c;根据用户名自动生成默认密码。在生成密码时&#xff0c;将用户名反转即为默认的密码。 2、案例目的 &#xff08;1&#xff09…...

小区业主管理系统

摘 要 随着城市化进程的加速和人口的不断增加&#xff0c;小区的数量也在不断增加。小区作为城市居民居住的主要场所&#xff0c;其管理工作也变得越来越重要。传统的小区业主管理方式存在诸多问题&#xff0c;如信息传递不畅、业务处理效率低下等。因此&#xff0c;开发一个高…...

vncsever ,window 远程ubuntu远程界面安装方式,VNC Viewer安装教程+ linux配置server 操作

linux 端安装 # 安装VNC 服务器软件 sudo apt install autocutsel # 剪切黏贴操作支持的包 sudo apt-get install tightvncserver # 安装的是 VNC 服务器软件&#xff0c;用于远程桌面访问 # 安装Xfce桌面环境 sudo apt-get install xfce4 xfce4-goodies #安装的是 XFCE 桌…...

java spring boot 单/多文件上传/下载

文章目录 使用版本文件上传服务端客户端&#xff08;前端&#xff09;方式一方式二 文件下载服务端客户端&#xff08;前端&#xff09; 代码仓库地址 使用版本 后端 spring-boot 3.3.0jdk17 前端 vue “^3.3.11”vite “^5.0.8”axios “^1.7.2” 文件上传 上传文件比较…...

C语言的内存函数

1. memcpy使⽤和模拟实现 1 void * memcpy ( void * destination, const void * source, size_t num ); • 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 • 这个函数在遇到 \0 的时候并不会停下来。 • 如果source和destination有任…...

【网络通信】计算机网络安全技术总结

一、概述 在数字时代的浪潮下&#xff0c;计算机网络安全技术已成为保护数据完整性和安全性的基石。这项技术不仅是计算机科学的重要组成部分&#xff0c;也是应对各种网络威胁和挑战的关键手段。 二、核心技术和应用 2.1 加密技术 作为网络安全技术的核心&#xff0c;加密技…...

Redis-实战篇-什么是缓存-添加redis缓存

文章目录 1、什么是缓存2、添加商户缓存3、前端接口4、ShopController.java5、ShopServiceImpl.java6、RedisConstants.java7、查看Redis Desktop Manager 1、什么是缓存 缓存就是数据交换的缓冲区&#xff08;称为Cache&#xff09;&#xff0c;是存贮数据的临时地方&#xff…...

别再只盯着CSI-2了!用示波器实测MIPI D-PHY波形,手把手教你排查Camera不通的硬件问题

别再只盯着CSI-2了&#xff01;用示波器实测MIPI D-PHY波形&#xff0c;手把手教你排查Camera不通的硬件问题 调试Camera模块时&#xff0c;MIPI信号问题往往是硬件工程师最头疼的挑战之一。当系统出现图像异常、花屏或无法识别时&#xff0c;大多数工程师的第一反应是检查CSI-…...

脉冲神经网络与神经形态计算的能效优化实践

1. 脉冲神经网络与神经形态计算基础脉冲神经网络&#xff08;SNN&#xff09;作为第三代神经网络模型&#xff0c;其核心在于模拟生物神经系统的信息处理机制。与传统人工神经网络&#xff08;ANN&#xff09;相比&#xff0c;SNN具有三个本质区别&#xff1a;首先&#xff0c;…...

基于LLM的游戏AI智能体:从感知到决策的框架构建与实践

1. 项目概述&#xff1a;一个能“玩”游戏的AI智能体最近在GitHub上看到一个挺有意思的项目&#xff0c;叫ChattyPlay-Agent。光看名字&#xff0c;你可能会觉得这又是一个基于大语言模型的聊天机器人。但点进去仔细研究后&#xff0c;我发现它的定位非常独特&#xff1a;这是一…...

SVG与CSS变量驱动的自动化品牌视觉生成技术实践

1. 项目概述&#xff1a;一分钟品牌塑造的实践宝库在品牌营销和创意设计领域&#xff0c;一个常见的痛点是如何快速、高效地生成高质量的视觉品牌资产。无论是初创公司需要一个临时的Logo&#xff0c;还是内容创作者想为新的系列视频设计一个统一的片头&#xff0c;传统的品牌设…...

mg3640s,ts8080,ts8100,g5080,g3800,g4800,ix6780,ts8180报错5B00,P07,E08,5b02,1704,1700,5b04佳能V6.200,亲测有用

下载&#xff1a;点这里下载 备用下载&#xff1a;https://pan.baidu.com/s/1WrPFvdV8sq-qI3_NgO2EvA?pwd0000 常见型号如下&#xff1a; G系列 G1000、G1100、G1200、G1400、G1500、G1800、G1900、G1010、G1110、G1120、G1410、G1420、G1411、G1510、G1520、G1810、G1820、…...

认识Python数据包套接字

如你所知&#xff0c;数据包格式套接字&#xff08;Datagram Sockets&#xff09;也叫“无连接的套接字”&#xff0c;在代码中使用 SOCK_DGRAM 表示。可以将 SOCK_DGRAM 比喻成高速移动的摩托车快递&#xff0c;它有以下特征&#xff1a;强调快速传输而非传输顺序&#xff1b;…...

React轻量级代码编辑器组件:基于Textarea的语法高亮方案

1. 项目概述&#xff1a;一个为React开发者量身打造的代码编辑器组件 如果你在React项目中需要嵌入一个代码编辑器&#xff0c;并且希望它轻量、美观、开箱即用&#xff0c;那么 uiwjs/react-textarea-code-editor 这个组件库很可能就是你一直在寻找的解决方案。它不是一个像…...

【目标检测系统网页版】基于YOLOv8的淡水鱼检测系统

【目标检测系统网页版】基于YOLOv8的淡水鱼检测系统 一、系统介绍 1、系统简介 基于YOLOv8的淡水鱼检测 Web 系统&#xff0c;支持单图检测、批量图片检测、视频检测与实时视频流检测。 2、功能特性 智能识别&#xff1a;YOLOv8 封装&#xff0c;单例加载&#xff0c;自动设…...

红外对射传感器实战指南:从原理到Arduino/CircuitPython应用

1. 项目概述红外对射传感器&#xff0c;也叫红外遮断传感器&#xff0c;是我在自动化项目和互动装置里用得最多的基础传感器之一。它原理简单直接&#xff0c;但用好了能解决很多实际问题&#xff0c;比如统计人流、检测传送带上的物品、制作一个简单的防盗报警器&#xff0c;或…...

越刷越空?不是自控力太差,是你的大脑“最高权限”丢了

被一块屏幕“遛”着走的人前几天深夜&#xff0c;我和几个以前在老东家一起扛过枪的兄弟&#xff0c;在一个烤串摊喝酒。一桌人&#xff0c;平均四十多岁&#xff0c;平时在公司里不是总监就是合伙人&#xff0c;西装革履&#xff0c;人模狗样。按理说&#xff0c;都算是社会化…...