gpt4 book ai didi

android - 可以在 Android 应用程序中包含/链接和使用为 linux 构建的共享库 (.so) 文件吗?

转载 作者:太空狗 更新时间:2023-10-29 15:38:37 25 4
gpt4 key购买 nike

我正在做一个需要包含 NGSpice 的项目Android 应用程序中的模拟库,当然能够使用它。

我尝试使用 SWIG 和 Android NDK 在我的 android 应用程序中包含 NGSpice windows DLL,但事实证明这是不可能的,所以现在我开始考虑将 NGSpice 构建为 shared library for linux .

现在我的问题是,我能否像在我的 Android 应用程序中一样使用 NGSpice 的 linux 共享库,或者它是否需要以某种方式构建以在我的 Android 应用程序上工作。

谢谢。

最佳答案

没有。 Android 通常与传统 Linux 有两个主要区别:

1) 它使用 Bionic C 库和动态链接器,而不是更传统的集合,例如 glibc。

2) Android 通常在 ARM 或 32 位 x86 处理器(或在极少数情况下为 MIPS)上运行,而您的桌面 Linux 库可能是 64 位或 32 位 x86 代码。

如果你构建一个与机器的体系结构兼容并且与bionic的系统库函数和动态链接器兼容的.so,那么它应该是可行的。

或者,如果您有兼容架构的东西但 libc 错误,则可以编写自己的加载程序以在安全设备上以工作形式将其加载到内存中,或者在 Root设备上可以运行chroot 中更传统的 linux 用户空间(通常是 Debian 派生的)。但这些都不容易集成到 Android 应用程序中 - 对于后者,您几乎肯定必须通过进程间通信来传递工作,而这在前一种情况下也可能更容易。

您唯一真正认可的解决方案是使用 ndk 构建系统或 ndk 生成的“独立工具链”和库的当前构建系统从源代码重建库。

关于android - 可以在 Android 应用程序中包含/链接和使用为 linux 构建的共享库 (.so) 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19280391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com