如何修复或定位“忍者:构建停止:子命令失败。”的问题?
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程序会产生死锁?如何定位修复?