`

Lua编译器的选择与源码安装

    博客分类:
  • Lua
阅读更多

在Nginx上使用Lua脚本能做很多有价值的事情,比如生成请求的唯一标识(排查问题)、统一的权限校验、限流防洪(保证服务正常可用)等。

 

Lua是什么?

Lua是一种轻量级多范式编程语言,其被设计为一种可扩展语义脚本语言作为首要目标(英语发音:/ˈluːə/,是葡萄牙语中“Lua”(月亮)的意思)[摘自] Lua (programming language) - WikipediaLua - 维基百科

Lua是一个功能强大、快速、轻量级、可嵌入的脚本语言。[摘自] Lua: about 官网

 

本文主要讲述“Lua编译器的选择与安装过程”。

 

首先,谈谈“Lua编译器的选择”问题。根据“HttpLuaModule - Embed the power of Lua into Nginx”文档的Description部分描述,运行Lua脚本主要可通过标准的Lua解释器LuaJIT实时编译器。在HttpLuaModule的Installation部分可以看到,“Install LuaJIT 2.0 or 2.1 (recommended) or Lua 5.1 (Lua 5.2 is not supported yet).”。文档里为什么会推荐使用LuaJIT编译器呢?经过网上搜索,发现答案在“Lua vs LuaJIT Performance Comparison on x86/x64 - LuaJIT”,LuaJIT编译器在各方面的性能都要好于Lua解释器(见下图)。

 

既然选择LuaJIT作为Lua的编译器,下面就需要搭建运行环境。进入LuaJIT的下载页面,下载最新的稳定版本(LuaJIT-2.0.4),也可以从git仓库克隆最新的代码(使用‘git checkout v2.1’来获取LuaJIT 2.1开发分支)。

LuaJIT的安装页面可以看到,LuaJIT仅发布了源码包,所以必须通过源码包来进行构建、安装并配置运行环境。(LuaJIT_install_shell.7z 是LuaJIT自动化安装脚本)

 

Mac上安装“LuaJIT 2.1.0-alpha”时,由于LuaJIT 2.1.0还是alpha版本,还需执行"ln -sf luajit-2.1.0-alpha /usr/local/luajit/bin/luajit"。

Note: the development releases deliberately do NOT install a symlink for luajit
You can do this now by running this command (with sudo):

  ln -sf luajit-2.1.0-alpha /usr/local/luajit/bin/luajit

 

更多关于Lua的资料,请查看我整理的“Lua - Github”。

 

安装日志中,可以大体地了解有哪些东西创建了。

 

# 构建日志

==== Building LuaJIT 2.0.4 ====
make -C src

make[1]: 正在进入目录 `/usr/local/LuaJIT-2.0.4/src'

...
BUILDVM jit/vmdef.lua
DYNLINK libluajit.so
LINK luajit
OK Successfully built LuaJIT

make[1]:正在离开目录 `/usr/local/LuaJIT-2.0.4/src'

==== Successfully built LuaJIT 2.0.4 ====

 

# 安装日志

==== Installing LuaJIT 2.0.4 to /usr/local/luajit ====

mkdir -p /usr/local/luajit/bin /usr/local/luajit/lib /usr/local/luajit/include/luajit-2.0 /usr/local/luajit/share/man/man1 /usr/local/luajit/lib/pkgconfig /usr/local/luajit/share/luajit-2.0.4/jit /usr/local/luajit/share/lua/5.1 /usr/local/luajit/lib/lua/5.1
cd src && install -m 0755 luajit /usr/local/luajit/bin/luajit-2.0.4
cd src && test -f libluajit.a && install -m 0644 libluajit.a /usr/local/luajit/lib/libluajit-5.1.a || :
rm -f /usr/local/luajit/bin/luajit /usr/local/luajit/lib/libluajit-5.1.so.2.0.4 /usr/local/luajit/lib/libluajit-5.1.so /usr/local/luajit/lib/libluajit-5.1.so
cd src && test -f libluajit.so && \
install -m 0755 libluajit.so /usr/local/luajit/lib/libluajit-5.1.so.2.0.4 && \
ldconfig -n /usr/local/luajit/lib && \
ln -sf libluajit-5.1.so.2.0.4 /usr/local/luajit/lib/libluajit-5.1.so && \
ln -sf libluajit-5.1.so.2.0.4 /usr/local/luajit/lib/libluajit-5.1.so || :
cd etc && install -m 0644 luajit.1 /usr/local/luajit/share/man/man1
cd etc && sed -e "s|^prefix=.*|prefix=/usr/local/luajit|" -e "s|^multilib=.*|multilib=lib|" luajit.pc > luajit.pc.tmp && \
install -m 0644 luajit.pc.tmp /usr/local/luajit/lib/pkgconfig/luajit.pc && \
rm -f luajit.pc.tmp
cd src && install -m 0644 lua.h lualib.h lauxlib.h luaconf.h lua.hpp luajit.h /usr/local/luajit/include/luajit-2.0
cd src/jit && install -m 0644 bc.lua v.lua dump.lua dis_x86.lua dis_x64.lua dis_arm.lua dis_ppc.lua dis_mips.lua dis_mipsel.lua bcsave.lua vmdef.lua /usr/local/luajit/share/luajit-2.0.4/jit/usr/local/luajit/src/jit

ln -sf luajit-2.0.4 /usr/local/luajit/bin/luajit 

==== Successfully installed LuaJIT 2.0.4 to /usr/local/luajit ====

 

  • 大小: 112.8 KB
分享到:
评论

相关推荐

    Lua 5.3.0源码——包含VS2012项目文件

    在压缩包中的win_build中包含了VS2012构建用的文件和目录,可以将Lua核心库编译成动态库或静态库,可以生成Lua编译器和命令行解释器。但是,Lua5.3.0的编译器luac.c中调用了非Lua Dll导出的函数和数据结构,所以Lua...

    Lua 5.2.3源码——包含VS2012项目文件

    在压缩包中的win_build中包含了VS2012构建用的文件和目录,可以将Lua核心库编译成动态库或静态库,可以生成Lua编译器和命令行解释器。但是,Lua5.2.3的编译器luac.c中调用了非Lua Dll导出的函数和数据结构,所以Lua...

    lua VC6可编译源码

    2. **luac源码**:luac是Lua的编译器,将 Lua 代码编译成字节码,以提高执行效率。源码通常包括luac.c和luac.h。 3. **工程文件**:针对VC6的项目文件(.dsp或.dsw),这些文件包含了编译和构建Lua所需的所有设置和...

    Lua5.3 源码 编译器 解释器 库文件

    官网下载的源码 然后自己生成了编译器 解释器和库文件 只需要把你的lua文件放在与lua exe同一目录然后运行lua exe 输入dofile "lua文件名" 回车就可以运行lua文件啦 方便新手用

    lua源码下载 Lua-5.3.4 源码 最新 截止2017-3-7

    4. **安装**:通过`make install`将编译好的Lua安装到系统指定的位置。 通过分析和编译源码,你可以了解到Lua是如何高效地实现动态语言特性的,如闭包、元表、弱引用等。同时,也可以根据需求修改源码,创建定制版...

    Lua 5.2.2源码——包含VS2012项目文件

    在压缩包中的win_build中包含了VS2012构建用的文件和目录,可以将Lua核心库编译成动态库或静态库,可以生成Lua编译器和命令行解释器。但是,Lua5.2.2的编译器luac.c中调用了非Lua Dll导出的函数和数据结构,所以Lua...

    lua5.4.4官网源码编译C++库

    接下来,我们在项目的源文件列表中,右键点击并选择“添加现有项”,将lua源码文件(如`lua.c`, `lualib.c`, `lauxlib.c`)添加到项目中。确保不要添加`luac.c`,因为`luac`是用于编译Lua源码到字节码的工具,我们在...

    Lua-5.3.4 源码 最新源码 截止2017-3-7

    `luac.c`文件包含了编译器部分,用于将Lua源代码编译为字节码。 4. **表(Table)** 表是Lua的核心数据结构,它既可作为关联数组,也可作为动态数组。在`lobject.h`和`ltablib.c`中,你可以找到关于表创建、查找和...

    lua-5.3.4源码

    《深入解析Lua 5.3.4源码》 Lua是一种轻量级的脚本语言,因其简洁、高效和易嵌入的特性,在游戏开发、系统管理、Web应用等多个领域得到了广泛应用。本文将针对Lua 5.3.4版本的源码进行深度剖析,旨在帮助开发者更...

    lua5.3.5最新版安装文件(包含c源码、解释器、编译器、静态库、用户手册和一个2048游戏脚本)

    lua5.3.5最新解释器、编译器、静态库、用户手册及c源码的安装包,附加2048游戏脚本,完整实用资源,请下载。 Lua是一个小巧的脚本语言。它是于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用...

    lua5.3.3版本源码

    9. **C接口**:`lua.h`和`lua.c`提供了C语言与其他语言交互的接口,如`lua_pushvalue()`和`lua_pcall()`,使得其他语言能够调用Lua函数或在Lua中调用C函数。 10. **错误处理**:Lua的错误处理在`ldebug.c`中实现,`...

    Lua源码分析

    对于理解整个Lua的源码结构,选择合适的阅读顺序至关重要。官方文档中建议的阅读顺序可以帮助我们更好地梳理整个Lua实现的脉络。 8. 全局状态机及内存管理: Lua的全局状态机负责协调Lua虚拟机的全局状态,而内存...

    易语言vc6封装的lua5.33支持库源码

    资源介绍:。重要细节必看--------->。1,所有的工程项目必须统一使用一样的运行库,例如多线程(/MT...2,把古老的vc6编译器拖到你的易语言安装目录下,有的则跳过(例如VC98linker目录)。资源作者:。@cs666。资源下载:。

    LUA-5.3.2 源码

    最后,LUA的源码还包含了一些辅助工具,如`lua.c`是LUA的独立解释器,`luac.c`是LUA的编译器,它们帮助用户直接在命令行上交互和编译LUA程序。 总的来说,LUA-5.3.2的源码是一个深入学习LUA语言、理解其运行机制的...

    lua 1.0 脚本引擎源码

    1. `lua.c`:这是Lua解释器的主要入口点,包含了大部分与解析、编译和执行Lua脚本相关的代码。你可以在这里找到如何读取、解释和执行Lua语句的实现。 2. `y_tab.c`:这个文件很可能涉及Lua的符号表(table)实现。...

    lua-5.2.2源码+语音视频编译教程

    6. **lua522_luac**:luac是Lua的字节码编译器,它将Lua源代码编译成字节码,便于执行和存储。这个目录可能包含luac的源代码或编译结果。 通过这个资源包,开发者不仅可以学习到Lua语言的基础,还可以掌握如何从...

Global site tag (gtag.js) - Google Analytics