我有一个简单的lua源代码,名为hello.lua
print('Hello Lua')我使用Lua5.3.4编写了这个文件,在RedHat Linux机器上进行字节码,如下所示:
luac -o hello.luac hello.lua
chmod +x hello.luac
./hello.luac
bash: ./hello.luac: cannot execute binary file我想建筑应该很好。我想不出是怎么回事。
发布于 2017-07-28 19:00:31
预编译的Lua程序的运行方式与源代码完全相同:
lua hello.luac发布于 2020-07-08 01:43:24
即使lua源文件中有lua源文件,它也被luac删除。在某些情况下,当需要在没有任何参数(例如CGI )的情况下运行编译的二进制文件时,您可以在luac文件的顶部手动添加shebang:
luac -o hello.luac hello.lua
echo '#!/usr/bin/env lua' > shebang
cat shebang hello.luac > hello.luac2
mv hello.luac2 hello.luac
chmod +x hello.luac
./hello.luac发布于 2017-07-28 19:14:26
正如@lhf在他的答案中所述,Lua字节码是使用Lua解释器执行的,正如手册所暗示的:
为了允许在Unix系统中使用Lua作为脚本解释器,如果块以#开头,独立解释器将跳过块的第一行。因此,可以使用
chmod +x和#!表单将Lua脚本制作成可执行程序。
添加一个谢邦作为脚本的第一行:
#!/usr/bin/env lua
print('Hello Lua')https://stackoverflow.com/questions/45380482
复制相似问题