2013-10-09 44 views
2

我正在開發一個項目,在該項目中我需要將NGSpice模擬庫包含在Android應用程序中,當然也可以使用它。爲Linux構建的共享庫(.so)文件可以包含/鏈接並用於Android應用程序嗎?

我嘗試了使用SWIG和Android NDK在我的Android應用程序中包含NGSpice窗口DLL,但事實證明它甚至不可能,所以現在我開始考慮將NGSpice構建爲shared library for linux

現在我的問題是,我可以像在我的Android應用程序中一樣使用Linux的共享庫,或者它需要以不同的方式構建,以處理我的Android應用程序。

謝謝。

+2

它需要爲Android構建... – krsteeve

回答

10

號的Android通常具有傳統的Linux兩個關鍵的區別:

1)它使用仿生C庫和動態連接器,而不是一個更傳統的集合如glibc的。

2)Android通常運行在ARM或32位x86處理器上(或極少數情況下是MIPS),而您的桌面Linux庫可能是64位或32位x86代碼。

如果您構建.so與機器的體系結構以及仿生的系統庫函數和動態鏈接器兼容,那麼它應該是可行的。

或者,如果你有什麼一個兼容的架構,但錯的libc,有可能寫自己的裝載機進入它存儲在一個安全的設備上工作的形式,或紮根設備上就可以在chroot中運行更傳統的linux用戶空間(通常是Debian派生的)。但是,這些都不易於集成到Android應用程序中 - 對於後者,您幾乎肯定必須通過進程間通信傳遞工作,這在前一種情況下也可能更容易。

您唯一真正認可的解決方案是使用ndk構建系統或ndk生成的「獨立工具鏈」和庫的當前構建系統從源重建庫。

相關問題