我怎样才能解决这个奇怪的问题;没有这样的文件或目录;在Mac上使用make生成时出错? 我有一个No.js原生ADON C++库,它使用节点GYP生成MaX文件,然后使用该Mag文件编译并链接库。我遇到了一个奇怪的错误:大约每20次运行一次,一个构建就会失败,错误以sh:开头,然后说从路径上看,在一个看似随机的目录中找不到看似随机的系统二进制或shell内置。例如,最近的错误消息显示: sh: /Users/kbuilder/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin/printf: No such file or directory

我怎样才能解决这个奇怪的问题;没有这样的文件或目录;在Mac上使用make生成时出错? 我有一个No.js原生ADON C++库,它使用节点GYP生成MaX文件,然后使用该Mag文件编译并链接库。我遇到了一个奇怪的错误:大约每20次运行一次,一个构建就会失败,错误以sh:开头,然后说从路径上看,在一个看似随机的目录中找不到看似随机的系统二进制或shell内置。例如,最近的错误消息显示: sh: /Users/kbuilder/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin/printf: No such file or directory,c++,node.js,macos,makefile,sh,C++,Node.js,Macos,Makefile,Sh,以下是我见过的一些其他变体: sh: /Library/Frameworks/Python.framework/Versions/3.5/bin/touch: No such file or directory sh: /Users/kbuilder/.nvm/versions/node/v10.19.0/bin/rm: No such file or directory sh: /Users/kbuilder/.rvm/gems/ruby-2.6.3@global/bin/printf: No

以下是我见过的一些其他变体:

sh: /Library/Frameworks/Python.framework/Versions/3.5/bin/touch: No such file or directory
sh: /Users/kbuilder/.nvm/versions/node/v10.19.0/bin/rm: No such file or directory
sh: /Users/kbuilder/.rvm/gems/ruby-2.6.3@global/bin/printf: No such file or directory

其他一些似乎相关的错误消息包括:

/bin/sh: /bin/sh: cannot execute binary file


这里发生了什么?我如何修复它?

文本文件中某个地方的行尾不正确?如果这就是问题所在,那么这种情况如此罕见且不一致似乎令人惊讶。我仍然进行了检查,存储库中提交的唯一一个以Windows行结尾的文件是一个测试输入文件,它肯定没有参与构建。我不认为Mac上的任何文件生成都会生成错误的行尾。你有什么版本的GNU make?您是否使用Xcode附带的GNU make?这是一个非常古老的版本,已知有bug(其中一些bug是由Apple添加的,在他们发布的非常古老的版本的原始源代码中不存在)。我建议您从自制或端口获得较新版本的GNU make,或者自己构建。从brew安装make似乎已经解决了这一问题。我只是尝试了一下,没有一个构建失败。值得一提的是,我们的节点gyp构建在Catalina和Xcode 12.1(GNU Make 3.81)上也失败了,将系统升级到GNU Make 4.3解决了这个问题。
make: /bin/sh: Exec format error