如何在运行二进制文件时加载android库?
问题描述:
所以,我有这个引用一些库的可执行二进制文件。当我尝试使用的Runtime.exec()运行它,它给我的错误流说法错误:如何在运行二进制文件时加载android库?
link_image[1891]: 7176 could not load needed library 'XXX.so' for 'YYY' (load_library[1093]: Library 'XXX.so' not found)CANNOT LINK EXECUTABLE
我有XXX.so
库,但我不知道我应该把它相对于二进制YYY
。我希望这为无根设备工作。
顺便说一句,我并不是很善于构建一般的东西,所以如果您认为我在构建二进制文件时遇到了问题,请随时指出。
答
你有两个选择
- 构建这个二进制用-static标志,我想这是可以使用的dlopen来动态地加载该库的最佳方法
- ,如
void *g_handle = NULL;
g_handle = dlopen("/system/lib/libskia.so", RTLD_LAZY);
_skFT_Init_FreeType = dlsym(g_handle, "FT_Init_FreeType");
/**do something */
dlclose(g_handle);
答
请参阅https://*.com/a/12934668其中真正建议使用通用方式设置LD_LIBRARY_PATH
的包装。您也可以在修改过的环境下使用ProcessBuilder。见https://*.com/a/8962189/192373。
哦!我一直在寻找如何在Java中设置环境变量这么久!谢谢! – mghareeb 2014-09-13 19:26:52