【问题标题】:Determining if the C compiler works failed with the following output确定 C 编译器是否工作失败,输出如下
【发布时间】:2017-06-14 21:29:03
【问题描述】:

我正在尝试使用 NDK 将 C 项目链接到 Android Studio。我收到以下 Cmake 错误。任何使用 NDK 的项目都会出现同样的错误。

确定 C 编译器是否工作失败,输出如下: 更改目录:C:/Users/Alex/Desktop/android-ndk/audio-echo/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeFiles/CMakeTmp

Run Build Command:"C:\Users\Alex\AppData\Local\Android\Sdk\cmake\3.6.3155560\bin\ninja.exe" "cmTC_52340"

[1/2] Building C object CMakeFiles/cmTC_52340.dir/testCCompiler.c.o
[2/2] Linking C executable cmTC_52340

FAILED: cmd.exe /C "cd . && C:\Users\Alex\AppData\Local\Android\sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe  --target=armv7-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__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fno-integrated-as -mthumb -Wa,--noexecstack -Wformat -Werror=format-security  -Wl,--exclude-libs,libgcc.a --sysroot C:/Users/Alex/AppData/Local/Android/sdk/ndk-bundle/platforms/android-21/arch-arm -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--fix-cortex-a8 -Wl,--exclude-libs,libunwind.a -LC:/Users/Alex/AppData/Local/Android/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -Wl,--gc-sections -Wl,-z,nocopyreloc -pie -fPIE CMakeFiles/cmTC_52340.dir/testCCompiler.c.o  -o cmTC_52340  -lm && cd ."

The system cannot find the path specified.
ninja: build stopped: subcommand failed.

我使用的是 Windows 10 和 Android Studio 2.3.3。 我可以在另一台 Windows 10 机器上成功运行相同的程序。 我很想至少了解其中的哪一部分失败了。任何意见表示赞赏!

【问题讨论】:

  • 当您执行dir C:\Users\Alex\AppData\Local\Android\sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe 时会发生什么?
  • 所以我移动了我的 sdk 目录,因为 cmd 在查找工具链目录时遇到问题。现在当我执行 dir C:\....\clang.exe 我得到: 驱动器 C 中的卷是 Windows8_OS 卷序列号是 CE7B-444C 目录 C:\Android\sdk\ndk-bundle\toolchains\llvm\prebuilt \windows-x86_64\bin 06/07/2017 08:22 AM 55,872,512 clang.exe 1 文件 55,872,512 字节 0 目录 68,679,270,400 字节免费
  • 看起来不错。当您现在尝试从命令行执行C:\Users\Alex\AppData\Local\Android\sdk\ndk-bundle\toolchain‌​s\llvm\prebuilt\wind‌​ows-x86_64\bin\clang‌​.exe 时会发生什么? CMake 是否仍然失败?
  • 我必须单独重新下载 ndk 才能让 cmd 识别工具链文件夹。现在,当我从完整路径运行 clang.exe 时,我得到: clang.exe: error: no input files。顺便说一句,感谢您的意见,目前这对我来说是一个巨大的障碍。
  • 伙计,我感谢您的努力,但我和我的同事决定放弃 NDK 并用 Java 重新编写所有内容。没有足够的 eewanco 来帮助我们解决我们所有的 cmake 问题,而且男孩有很多 cmake 问题。 quickmeme.com/meme/35rz5y

标签: c android-ndk cmake java-native-interface


【解决方案1】:

错误“系统找不到指定的路径。”由cmd.exe(即Windows 10 命令解释器)发出。 CMake 正在调用cmd.exe 并要求它运行C:\Users\Alex\AppData\Local\Android\sdk\ndk-bundle\toolchain‌​s\llvm\prebuilt\wind‌​ows-x86_64\bin\clang‌​.exe,但cmd.exe 找不到它,大概是因为它不存在。这表明 NDK 可能没有正确安装,或者根本没有安装。使用 Windows 资源管理器或cmd 查找此文件是否存在;如果它不存在,则说明您的工具未正确安装。看看哪里出了问题;例如,如果C:\Users\Alex\AppData\Local\Android\sdk\ndk-bundle\toolchain‌​s\llvm\prebuilt\wind‌​ows-x86_64\bin 存在并且其中有其他文件,则可能某些内容已损坏。如果你连ndk-bundle都找不到,那可能是根本没有安装NDK。

如果文件存在,尝试执行它;进入cmd 并直接运行C:\Users\Alex\AppData\Local\Android\sdk\ndk-bundle\toolchain‌​s\llvm\prebuilt\wind‌​ows-x86_64\bin\clang‌​.exe。如果它有效,那么您的 CMake 环境有问题(不确定是什么),但我猜它不会起作用。

【讨论】:

  • 非常感谢,这很有帮助。我无法通过 cmd 访问 toolchains 文件夹。我可以到达 ndk-bundle 但之后找不到工具链。不过,我可以在文件资源管理器中导航。
猜你喜欢
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-15
  • 2017-03-22
  • 1970-01-01
相关资源
最近更新 更多