簡體   English   中英

是否可以在Android應用程序中包含/鏈接並使用為Linux構建的共享庫(.so)文件?

[英]Can a shared library (.so) file built for linux be included/linked and used in an Android application?

我正在開發一個項目,我需要在Android應用程序中包含NGSpice仿真庫,當然也可以使用它。

我嘗試使用SWIG和Android NDK在我的Android應用程序中包含NGSpice windows DLL,但事實證明它甚至不可能,所以現在我開始考慮將NGSpice構建為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生成的“獨立工具鏈”和庫的當前構建系統從源重建庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM