【问题标题】:Android NDK GCC appears to be clang - is it the way it should be?Android NDK GCC 似乎很响——它应该是这样吗?
【发布时间】:2018-11-29 09:31:14
【问题描述】:

新下载的 NDK 在链接旧项目时失败并出现错误:

/usr/bin/ld: unrecognised emulation mode: armelf_linux_eabi

看起来,clang 隐藏在 gcc 的面具后面:

/opt/android-ndk-r18b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --version
Android (4751641 based on r328903) clang version 7.0.2 (https://android.googlesource.com/toolchain/clang 003100370607242ddd5815e4a043907ea9004281) (https://android.googlesource.com/toolchain/llvm 1d739ffb0366421d383e04ff80ec2ee591315116) (based on LLVM 7.0.2svn)
Target: arm--linux-android
Thread model: posix
InstalledDir: /opt/android-ndk-r18b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../../../../llvm/prebuilt/linux-x86_64/bin

这只是这个 NDK 版本中的错误还是故意制造的?

【问题讨论】:

    标签: android c++ android-ndk


    【解决方案1】:

    应该是这样的。

    GCC 在 r15 中被弃用,并在 r18 中被删除。但是为了让开发人员更轻松地过渡,wrapper scripts were provided 让 GCC 在实际使用 Clang 时看起来仍然存在。

    【讨论】:

    • FWIW,你会在 Mac 上找到同样的东西。
    • 无法找到链接器是我们在 r19 中修复的问题,但看起来 r19 仍然找不到 crt 对象,因为 Clang 只知道如何为版本化目标找到它们... arm-linux-androideabi-gcc -target arm-linux-androideabi16 按预期工作,但是 arm-linux-androideabi-gcc -D__ANDROID_API__=16 --sysroot $NDK/sysroot -L $NDK/platforms/android-16/arch-arm/usr/lib 应该工作的想法,因为以前工作过。不确定是否可以轻松解决。
    • 我可能只是要删除这些,因为它们实际上并没有用:github.com/android-ndk/ndk/issues/862
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    相关资源
    最近更新 更多