【问题标题】:Using ubuntu header lib in android ndk在 android ndk 中使用 ubuntu 头文件库
【发布时间】:2018-09-06 04:22:59
【问题描述】:

我正在使用 Android NDK 为 Android 开发构建一个开源库 C/C++。我从 Github 获得了代码,并在源代码下创建了自己的 jni 文件夹。在那个 jni 文件夹中,我创建了一些 C 源文件,并在开源库中包含了许多头文件。但是当我构建时,我得到了失败的日志:

致命错误:bits/libc-header-start.h:没有这样的文件或目录

我检查并看到文件“libc-header-start.h”存在于Ubuntu系统的/usr/include/x86_64-linux-gnu/bits/文件夹中,但是在构建时,它无法链接到该头文件

那么我可以在我的 Android NDK 库中使用 Ubuntu 系统头文件吗?

【问题讨论】:

  • 将-I/usr/include/x86_64-linux-gnu 添加到您的cFlags 中(假设此标头可以用于Android..Android 毕竟有自己的libc 实现)。
  • 不要那样做。 Android不使用glibc,两者没有兼容的headers。
  • 那么我应该怎么做才能在 Ubuntu OS 中为 android 构建一个 c/c++ 库?谢谢

标签: android android-ndk


【解决方案1】:

不,您不应使用 Ubuntu(或任何其他主机)包含或库来构建 Android NDK 库。 NDK 为 Android 目标交叉编译您的代码。并非 GitHub 上的所有 C++ 项目都可以轻松移植到 Android。如果他们使用 CMake,这些脚本通常需要针对 Android NDK 进行适配。如果他们使用 automake 工具,调整构建脚本可能会非常痛苦。

【讨论】:

  • 我正在为 android 编译 Coturn,可以吗? :(
【解决方案2】:

那么我可以在我的 Android NDK 库中使用 Ubuntu 系统头文件吗?

没有。您必须使用所有 Android NDK 特定的头文件和库来进行 NDK 编译,即 NDK 文件夹中的那些。

这里是一个Android JNI编程的例子:https://github.com/russell-shizhen/JniExample

【讨论】:

  • 我需要将 Coturn 编译为我的项目的 Android 库,但 Coturn 包含许多包含 Ubuntu 头文件,所以接下来我应该做什么:((
  • 我不确定这个项目是否可以完美地移植到 Android。但是您可以通过使用 NDK 标头和库来尝试一下。如果某些头文件或库在 NDK 中不存在,您可能无法在 Android 上编译它。或者你可以查看源码,尝试在NDK中找到计数器组件,但如果你真的遇到这种情况,我认为这不是一件容易的事。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
相关资源
最近更新 更多