【问题标题】:Android NDK tries to build with sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/ but gnu-libstdc++ doesn't existAndroid NDK 尝试使用 sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/ 构建,但 gnu-libstdc++ 不存在
【发布时间】:2019-09-08 07:52:52
【问题描述】:

我正在尝试构建一个具有原生组件的旧 Android 项目。

当我尝试构建项目时,出现以下错误:

Task :app:externalNativeBuildDebug FAILED
Build myappNative x86
[1/1] Linking CXX shared library ../../../../build/intermediates/cmake/debug/obj/x86/libmyappNative.so
FAILED: : && /Users/Can/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++  --target=i686-none-linux-android16 --gcc-toolchain=/Users/Can/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Users/Can/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security   -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack -shared -Wl,-soname,libmyappNative.so -o ../../../../build/intermediates/cmake/debug/obj/x86/libmyappNative.so CMakeFiles/myappNative.dir/src/main/cpp/src/com_myapp_system_Native.cpp.o CMakeFiles/myappNative.dir/src/main/cpp/src/sha256.c.o  -llog -latomic -lm "/Users/Can/Library/Android/sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/libgnustl_static.a" && :
clang++: error: no such file or directory: '/Users/Can/Library/Android/sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/libgnustl_static.a'
ninja: build stopped: subcommand failed.

这很明显:

error: no such file or directory: '/Users/Can/Library/Android/sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/libgnustl_static.a'

当我转到/Users/Can/Library/Android/sdk/ndk-bundle/sources/cxx-stl/ 时,只有以下内容:

  • llvm-libc++
  • llvm-libc++abi
  • system

没有这样的gnu-libstdc++ 目录。我做错了什么?

更新:在此期间,我已根据 Alex Cohn 的建议切换回旧的 NDK r17c。虽然 NDK 已过时,但它可以工作,这只是一种临时解决方法,而不是长期解决方案。

【问题讨论】:

    标签: android android-ndk llvm


    【解决方案1】:

    自从该项目发布以来,NDK has dropped gnustl。您仍然可以下载 NDK r.17 或更早版本,或者您可以将项目更改为使用 libc++_static

    【讨论】:

    • 我该怎么做?我试过谷歌搜索 Cmake gradle libc++_static 虽然找不到例子。只有 mk 文件的示例。
    • 您要查找哪个示例?在您的项目中查找对 gnustl 的引用。
    • gnustl 的唯一引用仅来自输出/构建工件。我的代码或配置文件中没有任何引用。
    • gnustl 的引用仅来自输出/构建工件 – 是否有一些预构建的二进制文件?
    • 另一种选择:也许您的项目使用了一个非常旧的 Android Gradle 插件?尝试在 AS 3.5 中打开它,它可能会提示您升级 Gradle 插件。
    【解决方案2】:

    以下命令可用于在基于 linux 的系统中安装缺少的软件包。

    sudo apt-get update
    sudo apt-get install libstdc++6
    

    【讨论】:

    • 我不在 Linux 上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多