`

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...

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

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

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

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

    lua VC6可编译源码

    lua VC6可编译项目及源码 debug目录中有编译好的lib,可直接测试使用

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

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

    lua编程(programming+in+lua

    希望大家能快速学习到lua的精髓。。。都是些lua比较实用的工具

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

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

    lua-5.3.5.zip

    Lua 5.3.5 windows平台 源码编译项目,包括一个 vc2015 解决方案,管理三个项目:lua53 动态链接库项目,lua 解释器项目,luac 编译器项目,以及 Lua5.3.5 完整源代码。 使用方法:解压后,进入目录 win32, 用 vs...

    lua-5.1.5.zip

    Lua 5.1.5 windows平台 源码编译项目,包括一个 vc2015 解决方案,管理三个项目:lua51 动态链接库项目,lua 解释器项目,luac 编译器项目,以及 Lua5.1.5 完整源代码。 使用方法:解压后,进入目录 win32, 用 vs...

    Lua 5.2.1源码——包含VS2005项目文件

    Lua 5.2.1源码,其中带VS2005的解决方案和项目文件(更新版本的VS也能兼容)。在压缩包中的WinBuild中包含了VS2005构建用的文件和目录,可以将Lua核心库编译成动态库或静态库,可以生成Lua编译器和命令行解释器。

    liblua.dll和luac.exe以及lua.exe

    使用Qt5.14.2在Win10上编译Lua源码,并将Lua源码编译成三个不同的目标文件,它们分别是:0:LuaLib(Lua动态库)、1:LuaCompile(Lua编译器)、2:LuaExplanation(Lua解释器)。

    超全的lua教程

    在网站上可以下载到lua的源码, 没有可执行版本, 不过不用担心, 因为lua源码可以在任何一种C/C++的编译器上编译.如果要学习Lua, 官方网站上的Reference是必备的,上面有每个命令的用法,非常详细。参考手册 ...

    cocos2dx lua益智游戏《蜗牛回家》源码

    cocos2dx lua益智游戏《蜗牛回家》源码 cocos精品小游戏源码 , 完整项目源码 是整个项目的压缩包 , 新建空项目直接导入到项目里面就可以运行了,无需其他操作。 适合二次开发和学习使用,都是经典游戏,需要其他游戏...

    VC6 下的lua

    Lua是一种完全免费的脚本语言, 可以和C/C++... 执行版本, 不过不用担心, 因为lua源码可以在任何一种C/C++的编译器上编译. 如果用的VC6, 可以下载所需的project文件。为了以后使用方便,最好把bin目录加入到path里面。

    Lua51Lib.zip

    5.1版本的lua官方c源码,使用vs2015编译器编译成lib静态库,亲测可用,属于比较稳定的lua版本

    LuaBind 源码 (Lua增强库)

    库要不就添加其所有源码到你的工程里面.你必须确保LuaBind目录在你的编译器包含目录中. LuaBind需要Boost 1.32.0 或者 1.33.0 (只需要头文件即可). LuaBind还需要Lua. 官方的构建LuaBind的方式是通过 Boost.Build ...

Global site tag (gtag.js) - Google Analytics