Android的NDK - 库没有发现不能链接可执行文件 - 如何设置LD_LIBRARY_PATH? [英] Android NDK - Library not found CANNOT LINK EXECUTABLE - how to set LD_LIBRARY_PATH?

查看:1193
本文介绍了Android的NDK - 库没有发现不能链接可执行文件 - 如何设置LD_LIBRARY_PATH?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有在那里我执行NDK编译code(命令行程序)一个Android的活动:

I have an Android activity where I'm executing NDK compiled code (command line program) with:

Runtime.getRuntime().exec(myCommand);

和加载所需的共享库:

and load the needed shared libraries with:

static {
    System.loadLibrary(myLib);
}

但运行我的项目,从印刷错误流的输出,当我收到以下错误:

but when running my project and printing the output from error stream I get the following error:

link_image[1963]:  7520 could not load needed library 'libmyLib.so' for './myCommand'
(load_library[1105]: Library 'libmyLib.so' not found)CANNOT LINK EXECUTABLE

我保证 libmyLib.so 在我的项目确实存在库/ armeabi / 目录下,它的复制到我的 /data/data/myProject.path.package/lib / 目录下的Andr​​oid设备。所有者和组的两个可执行文件和库是系统:系统和权限都OK以及

I assure libmyLib.so does exist in my project under libs/armeabi/ directory and it's copied to my Android device under /data/data/myProject.path.package/lib/ directory. Owner and group of both executable and library are system:system and permissions are ok as well.

当在开始执行亚行的shell命令我得到了同样的错误,但我可以设置 LD_LIBRARY_PATH ,它运行确定:

When executing the command from adb shell in the beginning I get the same error but then I can set LD_LIBRARY_PATH and it runs ok:

./adb shell
export LD_LIBRARY_PATH=/data/data/myProject.path.package/lib:$LD_LIBRARY_PATH
/data/data/myProject.path.package/myCommand

所以现在的问题是,如何做到这一点从Java的Andr​​oid项目?

So the question is, how to do that from java Android project?

注:我在GT-P1010使用Linux,Eclipse的+塞阔亚,NDK-R5B的Andr​​oid 2.3.6(API 10)

Note: I'm using Linux, Eclipse + Sequoyah, NDK-r5b, Android 2.3.6 (API 10) on GT-P1010.

推荐答案

解决:您可以使用 EXEC(字符串前卫,字符串[] envp)。就我而言,这是:

Solved: you can use exec(String prog, String[] envp). In my case this was:

String[] envp = {"LD_LIBRARY_PATH=/data/data/cse.ecg.dcmtk/lib:$LD_LIBRARY_PATH"};
Runtime.getRuntime().exec(myCommand, envp);

现在的问题是,与 EXEC()执行无法解析主机名(它确实来自亚行壳;上网权限设置)的过程。有关任何提示?

The issue now is that with exec() the process executed can't resolve hostnames (it does from adb shell; Internet permission is set). Any hint about that?

这篇关于Android的NDK - 库没有发现不能链接可执行文件 - 如何设置LD_LIBRARY_PATH?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆