lua.vm.js 构建失败(make (e=2): 系统找不到指定的文件。)

Posted

技术标签:

【中文标题】lua.vm.js 构建失败(make (e=2): 系统找不到指定的文件。)【英文标题】:lua.vm.js is failing to build (make (e=2): The system cannot find the file specified.) 【发布时间】:2021-10-19 07:25:08 【问题描述】:

从昨天开始,我就一直在尝试安装 lua.vm.js 来使用它。我在这里和那里遇到了一些障碍,但到目前为止,我不知道如何解决这个问题。我一直在尝试做的就是真正地构建它,就是这样。我从this GitHub page 获得了文件,我只是想按照说明进行操作。但是我收到了这条错误消息,至少对我而言,它没有任何意义,而且我不知道如何找到解决方案。

    C:\lua.vm.js-master\lua>make emscripten
    cd src && make emscripten
    process_begin: CreateProcess(NULL, em-config EMCC, ...) failed.
    process_begin: CreateProcess(NULL, em-config EMAR, ...) failed.
    process_begin: CreateProcess(NULL, em-config EMRANLIB, ...) failed.
    make[1]: Entering directory `C:/lua.vm.js-master/lua/src'
    make ../../dist/lua.vm.js \
                    CC="" \
                    AR=" rcu" \
                    RANLIB="" \
                    SYSLDFLAGS="-Os \
                            -s INVOKE_RUN=0 \
                            -s NO_EXIT_RUNTIME=1 \
                            -s TOTAL_MEMORY=134217728 \
                            -s RESERVED_FUNCTION_POINTERS=8 \
                            --memory-init-file 0 \
                            --post-js ../../src/lua.js \
                            --embed-file ../../src/js.lua@js.lua \
                            "
    make[2]: Entering directory `C:/lua.vm.js-master/lua/src'
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lapi.o lapi.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lapi.o lapi.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lapi.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lcode.o lcode.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lcode.o lcode.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lcode.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lctype.o lctype.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lctype.o lctype.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lctype.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o ldebug.o ldebug.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o ldebug.o ldebug.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [ldebug.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o ldo.o ldo.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o ldo.o ldo.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [ldo.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o ldump.o ldump.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o ldump.o ldump.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [ldump.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lfunc.o lfunc.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lfunc.o lfunc.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lfunc.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lgc.o lgc.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lgc.o lgc.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lgc.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o llex.o llex.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o llex.o llex.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [llex.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lmem.o lmem.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lmem.o lmem.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lmem.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lobject.o lobject.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lobject.o lobject.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lobject.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lopcodes.o lopcodes.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lopcodes.o lopcodes.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lopcodes.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lparser.o lparser.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lparser.o lparser.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lparser.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lstate.o lstate.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lstate.o lstate.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lstate.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lstring.o lstring.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lstring.o lstring.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lstring.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o ltable.o ltable.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o ltable.o ltable.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [ltable.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o ltm.o ltm.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o ltm.o ltm.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [ltm.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lundump.o lundump.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lundump.o lundump.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lundump.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lvm.o lvm.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lvm.o lvm.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lvm.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lzio.o lzio.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lzio.o lzio.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lzio.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lauxlib.o lauxlib.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lauxlib.o lauxlib.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lauxlib.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lbaselib.o lbaselib.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lbaselib.o lbaselib.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lbaselib.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lbitlib.o lbitlib.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lbitlib.o lbitlib.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lbitlib.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lcorolib.o lcorolib.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lcorolib.o lcorolib.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lcorolib.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o ldblib.o ldblib.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o ldblib.o ldblib.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [ldblib.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o liolib.o liolib.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o liolib.o liolib.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [liolib.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lmathlib.o lmathlib.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lmathlib.o lmathlib.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lmathlib.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o loslib.o loslib.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o loslib.o loslib.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [loslib.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o lstrlib.o lstrlib.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o lstrlib.o lstrlib.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [lstrlib.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o ltablib.o ltablib.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o ltablib.o ltablib.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [ltablib.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o loadlib.o loadlib.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o loadlib.o loadlib.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [loadlib.o] Error 2 (ignored)
    O2 -Wall -DLUA_COMPAT_ALL     -c -o linit.o linit.c
    process_begin: CreateProcess(NULL, O2 -Wall -DLUA_COMPAT_ALL -c -o linit.o linit.c, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: [linit.o] Error 2 (ignored)
    rcu liblua.a lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o liolib.o lmathlib.o loslib.o lstrlib.o ltablib.o loadlib.o linit.o
    process_begin: CreateProcess(NULL, rcu liblua.a lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o liolib.o lmathlib.o loslib.o lstrlib.o ltablib.o loadlib.o linit.o, ...) failed.
    make (e=2): The system cannot find the file specified.
    make[2]: *** [liblua.a] Error 2
    make[2]: Leaving directory `C:/lua.vm.js-master/lua/src'
    make[1]: *** [emscripten] Error 2
    make[1]: Leaving directory `C:/lua.vm.js-master/lua/src'
    make: *** [emscripten] Error 2

我尝试寻找其他有类似问题的人,但似乎这个问题是特定于你正在尝试做的事情,所以我无法将我发现的任何内容应用于这个问题。我是用gnuwn32制作的,没有篡改任何文件。


我会记录更多信息。 makefile 引用的 em-config.py 文件包含以下代码:

"""This is a helper tool which is designed to make it possible
for other apps to read emscripten's configuration variables
in a unified way.  Usage:

  em-config VAR_NAME

This tool prints the value of the variable to stdout if one
is found, or exits with 1 if the variable does not exist.
"""

import sys
import re
from tools import config


def main():
  if len(sys.argv) != 2 or \
    not re.match(r"^[\w\W_][\w\W_\d]*$", sys.argv[1]) or \
    not hasattr(config, sys.argv[1]):
    print('Usage: em-config VAR_NAME', file=sys.stderr)
    exit(1)

  print(getattr(config, sys.argv[1]))
  return 0


if __name__ == '__main__':
  sys.exit(main())

你可以清楚地看到它在 cmets 中的用法,它应该是“使其他应用程序能够以统一的方式读取 emscripten 的配置变量”,而在它的正下方,是 lua.vm.js 的 Makefile 的代码行调用以查找某些变量。如此处所示:

process_begin: CreateProcess(NULL, em-config EMCC, ...) failed.
process_begin: CreateProcess(NULL, em-config EMAR, ...) failed.
process_begin: CreateProcess(NULL, em-config EMRANLIB, ...) failed.

为什么它仍然拒绝找到合适的文件是我目前无法理解的。但是我有一个线索,Makefile 试图寻找的这个 C 编译器在我的系统上可能不存在,这既奇怪又令人困惑。

【问题讨论】:

【参考方案1】:

好吧,从错误开始:

O2 -Wall -DLUA_COMPAT_ALL     -c -o lapi.o lapi.c

这个命令试图编译一个 C 文件,但是这里没有真正的编译器,它只是选项。编译器去哪儿了?再往前看:

make ../../dist/lua.vm.js \
                CC="" \

这里我们看到 make 的调用将保存 C 编译器的 CC 变量设置为空字符串。为什么会发生这种情况?我不确定,但在此之前查看这些消息:

process_begin: CreateProcess(NULL, em-config EMCC, ...) failed.

让我怀疑在*** makefile 中出现了这样的内容:

CC := $(shell em-config EMCC)

它试图调用em-config 程序并让它找到一个C 编译器,但这个命令失败了。如果 makefile 检查这些值不为空并以更易于理解的错误退出,那就太好了。

但无论如何,似乎em-config 程序由于某种原因找不到或无法执行。这就是我们所能说的。要么您没有安装某些东西,要么您没有配置某些东西。这些工具通常是在 Linux 或 MacOS 等 POSIX 系统上开发的;通常,转换到 Windows 需要一些额外的手动步骤等。我不确定,但我建议您仔细阅读可用于在 Windows 上构建的所有说明,并确保所有这些说明都已成功遵循。

【讨论】:

感谢您惊人的洞察力。你看,Lua VM 使用 Emscripten,这是一个独立的软件,需要手动安装。它附带了这个丢失的 em-config 文件,它应该获取 C 编译器,但它仍然找不到它,即使在 100% 确定它实际上可以看到配置文件通过环境变量抛出正确的路径之后。有什么我可以编辑的内容来为您提供与此问题相关的更多信息吗?再次感谢您的宝贵时间 抱歉,我对 lua 和 emscripten 知之甚少,对 Windows 几乎一无所知,所以我无法提供帮助。

以上是关于lua.vm.js 构建失败(make (e=2): 系统找不到指定的文件。)的主要内容,如果未能解决你的问题,请参考以下文章

make install 执行失败

在一个 QtCreator 版本中使用 cmake 构建失败,而它与另一个版本以及来自终端的 catkin_make 一起使用

Android make 期间编译 libusbx 失败

在Make中,如何使配方仅在特定的退出代码上失败?

调用“make -j8 -l8”失败。构建ros工作区时ar_track_alvar包出错

运行 catkin_make 时调用“make -j4 -l4”失败错误