如何在 ESP8266 板上编译 Lua 代码?

How do you compile Lua code on ESP8266 Board?

node 模块有一个名为 compile 的方法,它编译代码并创建 .lc 文件。

我是否使用像nodemcu-tool这样的工具通过terminal参数连接到开发板,并执行node.compile('myfile.lua')命令来创建.lc文件?

如果init.lua在复位时被编译为init.lc,开发板会执行编译后的代码吗?

How do you compile lua code on ESP8266 Board?

这取决于您使用的工具。我使用的工作流程是:

  1. 使用nodemcu-uploader
  2. 将Lua代码上传到NodeMCU
  3. 使用 picocom
  4. 连接到 NodeMCU
  5. 使用node.compile()
  6. 编译文件
  7. (可选)使用 nodemcu-uploader
  8. 再次下载文件

不同的工具可能会稍微改变所涉及的步骤,但总体思路将保持不变:

上传->编译(->下载)

If init.lua is compiled as init.lc upon reset will the board execute the compiled code?

试试看 ;)

如果它不起作用,你总是可以只写一行 init.lua 需要 init.lc;一旦您的芯片启动并且运行.

,这不会影响您的性能

或者您可以将编译后的文件重命名为 init.lua,它应该也可以。

但请记住,正如文档所述:

[...] compilation is RAM-intensive and hence you will find that you will need to break your application [...]

If init.lua is compiled as init.lc upon reset will the board execute the compiled code?

是的,根据我们的常见问题解答

Note that if you use require("XXX") to load your code then this will automatically search for XXX.lc then XXX.lua so you don't need to include the conditional logic to load the bytecode version if it exists, falling back to the source version otherwise.

但是,另请注意,您的 init.lua 预计会相当小,因为实际应用程序会拆分为动态加载的单独文件。

(How) Do I use a tool like nodemcu-tool to connect to the board via the terminal parameter, and execute node.compile('myfile.lua') commands to create .lc files?

根据 command reference:

$ nodemcu-tool upload --port=/dev/ttyUSB0 myfile.lua --compile