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

请为aarch64-linux-gnu编译的这些库是否可以在arm64 Android设备上运行?这些名称的确切含义是什么?我知道aarch64指的是arm64处理器体系结构,但是我不知道操作系统在这里如何关联。

谢谢!

最佳答案

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

ldd /path/to/file.so


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

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

09-04 01:01