使用Popen运行emconfigure异常

时间:2017-10-06 21:37:45

标签: python emscripten

当我运行emconfigure ./configure时出现以下错误:

ERROR:root:Exception thrown when invoking Popen in configure with 

args: "./configure"!
Traceback (most recent call last):
  File "/usr/local/bin/emconfigure", line 13, in <module>
    emconfigure.run()
  File "/usr/local/Cellar/emscripten/1.37.21/libexec/emconfigure.py", line 46, in run
    shared.Building.configure(sys.argv[1:])
  File "/usr/local/Cellar/emscripten/1.37.21/libexec/tools/shared.py", line 1533, in configure
    process = Popen(args, stdout=None if EM_BUILD_VERBOSE_LEVEL >= 2 else stdout, stderr=None if EM_BUILD_VERBOSE_LEVEL >= 1 else stderr, env=env)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

2 个答案:

答案 0 :(得分:1)

击穿:

由于调用堆栈的深度,这个跟踪可能很棘手。让我们分开吧:

在“下一个顶级”:找不到您尝试执行的文件。

低于事情变得清晰的一个级别:subprocess.Popen正在尝试执行args。

args中有什么? - 基本上./configure(由emscripten传递)。导出EM_BUILD_VERBOSE = 3环境变量,然后stderr应该显示它。

因此,下一个顶级./configure以无效的方式指导事物。现在是时候猜测在顶层(不知道./configure脚本中有什么):是./configure脚本文件本身的shell命令的某一行试图执行非存在的?例如:#之后的某个点! / bin / sh? - 尝试调试只是 ./compile。

值得注意的是,子进程可能会遇到相对路径(没有获取PATH)和权限(./configure被锁定)的问题,但即使在/ you / make / an /之后,您的错误也可能会持续存在绝对/调用/配置 777配置权限。 - 在这种情况下,前一段是最有可能的罪魁祸首。

社论:

这个错误作为emscripten的一个常见问题很有意思的原因是emscripten的部分(很多)存在的理由是将[遗留] C / ++代码移植到新的JS应用程序中。好吧,旧的C / ++构建在这个问题的意义上变得老了 。如果这是真的,这将是一个普遍存在的问题,并且,如果它是一般的,社区可以使用一般模式来解决。

答案 1 :(得分:0)

如果您使用的是Docker,那么您的主机就是Windows,并将其安装到Windows目录中,请确保您的文件不是\r\n行结尾,而是{{1}行结尾。改变它为我修好了。

在这种情况下,如果您正在使用git,则可以尝试设置\n以停止结帐git config core.autocrlf input。如果您需要转换文件,请尝试this answer out