Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编译lua文件_Lua - Fatal编程技术网

编译lua文件

编译lua文件,lua,Lua,如何在Windows上构建和编译自己的Lua文件?并使其可执行 我正在阅读开始Lua编程的文章,我已经安装了Windows7和MacOSLion。我很难按照指示去做。他们不为我工作 在MacOS上,我打开终端并将其放入: export LUA_DIR=/usr/local/lib/LUA/5.1 mkdir-p/usr/local/lib/lua/5.1(它告诉我,mkdir:非法选项),我不能从这里开始 SET LUA\u DIR=“c:\program files\LUA\5.1” 至于Wi

如何在Windows上构建和编译自己的Lua文件?并使其可执行

我正在阅读开始Lua编程的文章,我已经安装了Windows7和MacOSLion。我很难按照指示去做。他们不为我工作

在MacOS上,我打开终端并将其放入:

  • export LUA_DIR=/usr/local/lib/LUA/5.1
  • mkdir-p/usr/local/lib/lua/5.1
    (它告诉我,
    mkdir:非法选项
    ),我不能从这里开始
  • SET LUA\u DIR=“c:\program files\LUA\5.1”
  • 至于Windows,我是按照书中的说明来做的。 这就是我在shell中看到的
    c:\Users\bd>

  • mkdir“c:\program files\utility”
    它告诉我访问被拒绝
  • 我已尝试右键单击此文件夹并选中“只读”,但它不起作用。
    如果您能提供任何线索,我将不胜感激,这部分内容让我非常困惑。

    您的Windows有权限问题-请尝试在管理员模式下创建您的
    cmd
    或PowerShell<代码>C:\Program Files是一个受保护的目录,普通用户帐户没有写入权限


    对于OSX问题,请查看以确保命令正确。

    对于OSX终端问题:

    这个命令应该有效

    export LUA_DIR=/usr/local/lib/lua/5.1
    
    此命令可能会给您带来权限问题:

    mkdir -p /usr/local/lib/lua/5.1
    
    你可以试着用这个来解决这个问题。系统将提示您输入密码:

    sudo mkdir -p /usr/local/lib/lua/5.1
    
    此命令与OSX无关,无法工作。这是一个windows命令:

    SET LUA_DIR=”c:\program files\lua\5.1”
    

    要将Lua文件打包到Windows上的可执行文件中,您有几个选项。有,有来自wxLua的wxLua冻结(作为一个可用),在这方面有更多的选项

    基本上,主要的两个选项是:(1)将Lua代码附加到预编译的exe文件中,以便在运行该exe文件时加载并执行该文件;(2)通过将Lua代码编译为字节码,然后编译为C,再编译到目标平台,将其转换为真正的可执行文件


    至于MacOS问题,
    mkdir-p
    意味着要求mkdir创建中间目录(例如,您要求创建
    /a/b/c
    ,如果这些目录不存在,它也将创建
    /a/b
    )。由于您没有说明运行哪个版本的MacOS,因此很难提供更详细的答案。

    因此,如果我正确理解您的问题,您正在尝试在Windows上构建Lua

    这当然是可能的,但对初学者来说并不容易。我强烈建议您使用二进制发行版,它更易于安装,除非您有特殊要求

    以下是几个Windows发行版:


    目前,Lua的标准发行版没有将脚本编译为本机可执行代码;它通过首先将脚本编译为字节码,然后通过合理快速的静态解释来解释字节码来执行脚本(这也意味着它很容易跨本机或虚拟系统移植,并且非常抵抗攻击(可能是针对本机编译器本身的bug)

    此外,Lua仍然没有像Java和.Net那样的运行时JIT编译器:Lua仍然没有生成安全沙盒的VM

    存在将字节码(或直接源脚本)转换为C源代码的Lua包,该源代码可用于通过用于编译Lua引擎本身的相同C编译器将Lua库转换为本机模式(这就是生成内置库的方式,尽管在某些时间关键的部分,它们会稍微进行手动优化)

    但是,可以将Lua编译成javascript源代码,并使用javascript快速运行它,因为今天的javascript解释器在其实现的VM中具有良好的性能,其特点是为自己的字节码提供了JIT编译器

    也可以通过将Lua字节码转换为.Net或Java源代码,然后直接从Lua执行(为此,您需要一个已移植到.Net或Java或Javascript的Lua版本,这与使用JIT编译器在C/C++中直接开发VM相比并不复杂)(一个中等复杂的部分是字节码验证器,但真正复杂的部分是内存管理器、垃圾收集器和沙箱,这样您的Lua脚本将完全与Lua引擎本身隔离,用于itw自己的内存,但最复杂的部分是运行时优化器和分析统计信息的收集:这是在t他为Java、.Net、Javascript、PHP/Zend、Python、Perl等开发了现代虚拟机

    我不知道哪种其他语言的虚拟机能够提供最好的性能来移植Lua,并在其上实现一个编译器,使其在虚拟机中以接近本机速度运行自己的字节码自我生成一个可以自己运行的字节码,总是让我看到Java在性能上胜过.Net和Javascript。这很可能是因为Java具有一个基于分析的动态代码优化器

    (在相反的情况下,.Net optimizer在程序安装期间仅运行一次,使用在.Net VM本身安装期间收集的一些评测数据,或在脚本的第一个实例中收集的一些评测数据,而实际上不知道在编译程序本身执行期间收集的任何评测数据,并且基于对他强调了平台能力)

    (我不知道用PHP、Python或Perl是否会更快;但从未尝试过与较新的Javascript引擎进行比较)。将Lua程序移植到Javascript相对容易,因为它实现了相对容易的链接解析

    可能稍后我们会看到一个真正的Lua虚拟机实现,带有JIT和自生成代码,并且可以实例化新的沙盒虚拟机来运行其自生成的代码