[英]Can a shared library (.so) file built for linux be included/linked and used in an Android application?
不,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.