我有一个.so文件,我从Android APK中取出(不是我的应用,因此我无法访问源,只有库)
我想在我的32位Ubuntu机器上使用这个共享对象,并从中调用一些函数(最好用Python)。是否可以将Android .so转换为Linux .so?
或者是否有任何简单的解决方案来访问.so中的函数而无需使用大量的虚拟机或其他东西?
由于
答案 0 :(得分:1)
很可能不是。很可能你从它上面运行的Android运行在 ARM 架构上,因此为该架构编译了function [X,ITEST,counter] =NLNR(X,F,MAXIT,counter,ABSER,RELER,ITEST)
while ITEST==1 %run loop as long as ITEST is 1
counter=counter+1; %use counter to keep track of iterations
dX=DFDX/(-F);
X=X+dX;
if abs(Y(1)-X(1))<ABSER %check convergence
ITEST=3;
end
if abs((Y(1)-X(1))/X(1))<RELER %check convergence
ITEST=3;
end
if counter>MAXIT %check divergence
ITEST=2;
end
Y(1)=X(1); %set Y to check diff in next loop
Y(2)=X(2);
end
库。
除非您的桌面计算机也在ARM体系结构上(它很可能是x86,而且必须是特定的,例如ARMv7),.so
二进制文件在桌面上将不兼容。
根据.so
库的实际情况,您可以获取源代码并为x86机器编译它。
免责声明:即使您获得了与桌面(来自x86手机)相同的架构编译的库,也无法保证它能够正常工作。它可能依赖于仅由Android提供的其他库,这可能是一个非常深的兔子洞的开始。