我正在开发一个项目,我需要在Android应用程序中包含NGSpice 模拟库,当然能够使用它.
我尝试使用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代码.
如果你构建一个与机器的体系结构兼容的.so,并且使用bionic的系统库函数和动态链接器,那么它应该是可行的.
或者,如果您有兼容的体系结构但错误的libc,可以编写自己的加载器以便在安全设备上以工作形式将其存入内存,或者在有根设备上运行更传统的设备linux用户空间(通常是Debian派生的)在chroot中.但是这些都不容易集成到AndroID应用程序中 – 对于后者,你几乎肯定必须通过进程间通信来完成工作,这在前一种情况下也可能更容易.
您唯一真正认可的解决方案是使用ndk构建系统或ndk生成的“独立工具链”和库的当前构建系统从源重建库.
总结以上是内存溢出为你收集整理的是否可以在Android应用程序中包含/链接并使用为Linux构建的共享库(.so)文件?全部内容,希望文章能够帮你解决是否可以在Android应用程序中包含/链接并使用为Linux构建的共享库(.so)文件?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)