android - aarch64-linux-gnu 和 aarch64-linux-android 库之间的区别

标签 android shared-libraries arm64

我想在 Android 上使用一个为 arm64 编译的共享库。我的 .so 文件位于 aarch64-linux-gnu 文件夹中,但对于其他库,我有一个 aarch64-linux-android 文件夹。

这些为 aarch64-linux-gnu 编译的库可以在 arm64 Android 设备上运行吗?这些名称究竟代表什么?我知道 aarch64 指的是 arm64 处理器架构,但我不知道这里的操作系统是如何关联的。

谢谢!

最佳答案

Android 和 ARM 我有一些相同的库。基本上,SO 文件必须能够找到它所链接的所有库才能运行,并且版本需要匹配,这样才不会中断。这是有风险的,在目标机器上编译整个程序通常是最安全的。您可以使用以下方法查看是否可以找到所有内容/缺少的内容:

ldd /path/to/file.so

这将为您提供库列表以及文件认为它们所在的位置 - 或 ???如果找不到。您需要仔细检查并查看结果是否正常。

即使找到所有依赖项,版本或体系结构的不匹配也会导致程序在运行时中断。您需要广泛测试外部链接库的使用,即使那样您也可能会错过一些破坏程序的情况。出于这个原因,如果可能的话,我会尝试获取源代码,然后在目标机器上重新编译所有内容。

关于android - aarch64-linux-gnu 和 aarch64-linux-android 库之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51262794/

相关文章:

ios - 为 arm64 iOS 构建 C 库 (GMP)

docker - 编译容器化 Rust 应用程序以在树莓派 4 (arm64/armv8) 上运行。无法执行 "No such file or directory"

android - 如何在两个 fragment onClick 按钮之间传递参数

java - 如何在 Android 中按值对 HashMap<String , Byte> 进行排序?

android - 如何在 iOS 和 Android 上翻译应用程序?这在经济上是否值得?

javascript - 在两个 NodeJS 微服务之间共享自定义代码

ios - 为什么我的应用程序只构建 arm64 slice?

javascript - 强制移动屏幕键盘不是绝对位置?

c - 如何使用 CMakeLists.txt 创建库并将其包含在另一个程序中?

c - 将 CUDA 静态或共享库与 gcc 链接时出现 undefined reference 错误