我想在 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/