0

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

    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())

你可以在评论中清楚地看到它的用法,它应该是“让其他应用程序能够以统一的方式读取 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 编译器可能不存在于我的系统上,这既奇怪又令人困惑。

4

1 回答 1

1

好吧,从错误开始:

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

此命令试图编译 C 文件,但这里没有实际的编译器,它只是选项。编译器去哪儿了?往后看一点:

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

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

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 上构建的任何说明,并确保所有这些说明都已成功遵循。

于 2021-08-17T12:18:36.747 回答