Android Studio Cmake:“C 编译器 clang.exe 无法编译简单的测试程序

Android Studio Cmake: "The C compiler clang.exe is not able to compile a simple test program

提问人:user3697344 提问时间:6/14/2017 更新时间:8/30/2022 访问量:3494

问:

64 位 Windows 10。安卓工作室 2.3.3。

我正在尝试使用 JNI 将现有的 C++ 项目链接到 Android Studio。我还尝试加载所有提供的 NDK-JNI 示例项目。JNI/Cmake 的所有内容都无法进行 Gradle 同步,失败并出现相同的错误:

Build command failed.
Error while executing process C:\Users\Alex\AppData\Local\Android\Sdk\cmake\3.6.3155560\bin\cmake.exe with arguments {-HC:\Users\Alex\Desktop\android-ndk\hello-jni\app\src\main\cpp -BC:\Users\Alex\Desktop\android-ndk\hello-jni\app\.externalNativeBuild\cmake\armDebug\armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=C:\Users\Alex\AppData\Local\Android\Sdk\ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Users\Alex\Desktop\android-ndk\hello-jni\app\build\intermediates\cmake\arm\debug\obj\armeabi -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=C:\Users\Alex\AppData\Local\Android\Sdk\cmake\3.6.3155560\bin\ninja.exe -DCMAKE_TOOLCHAIN_FILE=C:\Users\Alex\AppData\Local\Android\Sdk\ndk-bundle\build\cmake\android.toolchain.cmake -DANDROID_PLATFORM=android-23 -DANDROID_TOOLCHAIN=clang}
-- Check for working C compiler: C:/Users/Alex/AppData/Local/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe
-- Check for working C compiler: C:/Users/Alex/AppData/Local/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe -- broken
CMake Error at C:/Users/Alex/AppData/Local/Android/sdk/cmake/3.6.3155560/share/cmake-3.6/Modules/CMakeTestCCompiler.cmake:61 (message):
The C compiler
"C:/Users/Alex/AppData/Local/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe"
is not able to compile a simple test program.
It fails with the following output:
Change Dir: C:/Users/Alex/Desktop/android-ndk/hello-jni/app/.externalNativeBuild/cmake/armDebug/armeabi/CMakeFiles/CMakeTmp
Run Build
Command:"C:\Users\Alex\AppData\Local\Android\Sdk\cmake\3.6.3155560\bin\ninja.exe"
"cmTC_accda"
[1/2] Building C object CMakeFiles/cmTC_accda.dir/testCCompiler.c.o
[2/2] Linking C executable cmTC_accda
FAILED: cmd.exe /C "cd .  &&
C:\Users\Alex\AppData\Local\Android\sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe
--target=armv5te-none-linux-androideabi
--gcc-toolchain=C:/Users/Alex/AppData/Local/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64
--sysroot=C:/Users/Alex/AppData/Local/Android/sdk/ndk-bundle/sysroot
-isystem
C:/Users/Alex/AppData/Local/Android/sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi
-D__ANDROID_API__=23 -g -DANDROID -ffunction-sections -funwind-tables
-fstack-protector-strong -no-canonical-prefixes -march=armv5te
-Werror=format-security -Wl,--exclude-libs,libgcc.a --sysroot
C:/Users/Alex/AppData/Local/Android/sdk/ndk-bundle/platforms/android-23/arch-arm64
-Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings
-Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro
-Wl,-z,now -Wl,--gc-sections -Wl,-z,nocopyreloc -pie -fPIE
CMakeFiles/cmTC_f48b1.dir/testCCompiler.c.o -o cmTC_f48b1 -lm && cd ."
The system cannot find the path specified.
ninja: build stopped: subcommand failed.
CMake will not be able to correctly generate this project.

我安装了所有必要的 SDK 工具。我试过使用 GCC 而不是 clang。感谢您的帮助!

安卓 C 安卓 NDK CMake java原生接口

评论

0赞 snoopy 6/14/2017
是否有与二进制文件位于同一路径的二进制文件?makeclang
1赞 user3697344 6/15/2017
那是哪条路?对不起,我是 NDK 开发的新手
0赞 A. Rager 11/16/2017
你有没有想过这一点?我在尝试使用 Studio 10 在 Windows 3.0 上构建时遇到了同样的问题。已安装 CMake 和 NDK。我没有看到 clang.exe 的制作.exe如果这有什么不同,@snoopy

答:

0赞 user26742873 2/16/2021 #1

主要错误消息是:

The system cannot find the path specified.

请注意,上面的一些地方用作路径分隔符:/

"C:/Users/Alex/AppData/Local/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe"

并已成功运行。而这一行:

C:\Users\Alex\AppData\Local\Android\sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe

似乎失败了。我想问题出在.尝试找到定义此路径的位置,可能在 IDE 选项、配置文件或 Makefile 中,然后修改它可能会解决问题。\

-1赞 Khalid Ansari 8/30/2022 #2

这是因为 clang 版本不匹配 检查您拥有的 clang 版本以及所需的 Android 应用程序的最低 clang 版本!

评论

0赞 starball 9/4/2022
我在这里没有领域知识。我只是好奇你为什么这么说。我认为与 android NDK 捆绑在一起的 clang 将与 NDK 的其余部分以及它所需的任何内容兼容。
0赞 Community 9/5/2022
您的答案可以通过额外的支持信息得到改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。