【问题标题】:Android NDK use llvm-libc++ for APP_STLAndroid NDK 为 APP_STL 使用 llvm-libc++
【发布时间】:2015-08-11 03:41:38
【问题描述】:

我正在尝试使用带有单个 c=99 标志的 LLVM 6(只是 xcode 的默认值)在 Mac 上编译的 C/C++ 代码,但在 NDK 中这不想编译(我得到大量的“未定义引用”错误)。

在我的 Application.mk 中,我的 APP_STL 是这样的:

APP_STL := gnustl_shared

在编译时,这会调用这个库:

[armeabi] Prebuilt       : libgnustl_shared.so <= <NDK>/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi/thumb/

理论上(根据文档)这个 APP_STL := gnustl_shared 应该触发 LLVM 库,这似乎没有做。

但是,在同一个 NDK 安装文件夹中,我还有其他库,它们被标记为 LLVM:

如何强制 APP_STL 语句使用 llvm-libc++ 或 llvm-libc++abi 库?

编辑:根据要求,这里也是我在编译时遇到的错误列表:

【问题讨论】:

  • 您是否愿意与我们分享其中的一些错误?
  • 我刚刚进行了编辑,其中包含我遇到的错误的简短列表
  • 1) 该错误似乎与 Application.mk 中缺少的一些 .cpp 文件有关(例如,实现 InteractionManager::OnInteractionUpdate(...) 的文件)。 2)你可以通过设置值APP_STL := c++_shared来使用llvm的libc。此外,llvm-libc++可能仅支持与 clang 编译器结合使用
  • 我正在尝试将 .cpp 文件添加到清单文件中,但链接几乎每个 .cpp 文件似乎都存在问题,而且我有超过 3000 个文件。如何使用 clang 编译器?就像这样:NDK_TOOLCHAIN_VERSION:=clang?
  • 工具链:是的,如果这不起作用,请尝试在其后面使用明确的版本号...clang-1.2。如果我们看不到它们,就无法帮助修复您的链接器错误

标签: android c++ android-ndk


【解决方案1】:

我认为你需要

APP_STL := c++_static

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 2022-01-07
    • 2023-03-03
    • 2014-03-28
    • 1970-01-01
    相关资源
    最近更新 更多