我已经使用 NDK(使用 NDK 中的 BUILD_EXECUTABLE 属性)构建了一个原生 C 用户空间应用程序。
我的应用程序由使用少量共享对象(我使用 BUILD_SHARED_LIBRARY 创建的共享库)的主程序组成。
我可以正常运行该应用程序(我使用的是 LG-G4)但是:仅当我将 *.so 文件复制到手机上的/system/lib 和/system/lib64 时它才有效。
有没有办法将 *.so 文件复制到某个自定义位置(比如/data/my_dir),并且应用程序仍然可以在运行时链接到 *.so?
最佳答案
我知道现在回答已经晚了,但无论如何,这个答案可能对遇到此类问题的其他人有所帮助。您不必将 *.so 库从您的 native 库目录复制到任何地方,只需告诉 ProcessBuilder 您的库所在的位置,如下所示:
//your process builder which executes
ProcessBuilder pb = new ProcessBuilder(argvlist);
//lbpath - path (your native dir) of shared libraries which are used by executable
pb.environment().put("LD_LIBRARY_PATH", lbpath);
关于android - 链接到 Android 平台中自定义位置的共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38950315/