如何修复或定位“忍者:构建停止:子命令失败。”的问题?

Posted

技术标签:

【中文标题】如何修复或定位“忍者:构建停止:子命令失败。”的问题?【英文标题】:How to fix or locat the problem of "ninja: build stopped: subcommand failed."? 【发布时间】:2019-06-14 09:30:58 【问题描述】:

背景: 我想在 Windows7 上使用带有 androidStudio 的Obfuscator-llvm-8.0 版本的 clang 和 clang++; 所以我得到Obfuscator-llvm-8.0源代码并编译成功,然后我把“clang.exe, clang++.exe, clang-check.exe, clang-format.exe”放到原始ndk工具链中,即"xxx\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin"; 如果你现在构建apk,你会得到“Build command failed.”,因为一些.h文件也需要复制,所以我复制了它们;

问题情况: 再次Build apk,会报错(见下); 所以我只是复制“clang++ complie str”并直接在windows终端上执行它,它执行成功并生成了.o文件, 甚至我复制 cmake 参数并执行它我得到.so 文件;

问题: 我无法在 Android Studio IDE 上构建它,也无法获得任何详细的错误消息来修复它; 有什么我想念的吗?或者无论如何都可以找到有关“忍者:构建停止:子命令失败。”的详细消息?

我试过搜索“忍者:构建停止:子命令失败。”在 google 上,只是获取一些关于遵守 AndroidOs 的信息,然后告诉你做些什么来修复它,但不告诉你为什么。

这是完整的错误信息:

Build command failed.
Error while executing process D:\Android\Sdk\cmake\3.10.2.4988404\bin\cmake.exe with arguments --build C:\Users\Administrator\AndroidStudioProjects\OllvmTest\app\.externalNativeBuild\cmake\debug\armeabi-v7a --target native-lib
[1/2] Building CXX object CMakeFiles/native-lib.dir/native-lib.cpp.o
FAILED: CMakeFiles/native-lib.dir/native-lib.cpp.o 
D:\Android\Sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=armv7-none-linux-androideabi19 --gcc-toolchain=D:/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64 --sysroot=D:/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/sysroot  -Dnative_lib_EXPORTS  -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -march=armv7-a -mthumb -Wa,--noexecstack -Wformat -Werror=format-security   -O0 -fno-limit-debug-info  -fPIC -MD -MT CMakeFiles/native-lib.dir/native-lib.cpp.o -MF CMakeFiles\native-lib.dir\native-lib.cpp.o.d -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c C:/Users/Administrator/AndroidStudioProjects/OllvmTest/app/src/main/cpp/native-lib.cpp
ninja: build stopped: subcommand failed.

【问题讨论】:

请不要倾向于将一切包装到代码格式中。这种格式非常适合代码、命令行、日志。当用于类似代码的名称以突出显示它们时,它会有所帮助。它可以用于文件名(如cool_program.exe)、部分文件(.so)或类似文件名(Obfuscator-llvm-8.0),而有些人反对这种用法。但是对自然语言中的短语(如report error(see below))使用代码格式肯定是误用 - 请不要这样做。此外,“Windows7”和“Android Studio IDE”等名称不需要代码格式化。 抱歉,现在已修复。 奇怪的是,现在一切正常,我不知道为什么。 【参考方案1】:

我在 Yocto 中构建时遇到了这个问题。解决方案是减少用于并行构建的线程数。

【讨论】:

以上是关于如何修复或定位“忍者:构建停止:子命令失败。”的问题?的主要内容,如果未能解决你的问题,请参考以下文章

Java -- 每日一问:什么情况下Java程序会产生死锁?如何定位修复?

如何修复烦人的 Visual Studio 文本编辑器光标错位错误

更新informix中的行时如何修复错误-245

Java中死锁的定位与修复

Java中死锁的定位与修复

2018年小结