[英]Android NDK - Library not found CANNOT LINK EXECUTABLE - how to set LD_LIBRARY_PATH?
我有一個Android活動,我正在執行NDK編譯代碼(命令行程序):
Runtime.getRuntime().exec(myCommand);
並使用以下命令加載所需的共享庫:
static {
System.loadLibrary(myLib);
}
但是當運行我的項目並從錯誤流打印輸出時,我收到以下錯誤:
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
確實存在於libs/armeabi/
目錄下的項目中,並且它被復制到我的Android設備下的/data/data/myProject.path.package/lib/
目錄下。 可執行文件和庫的所有者和組都是system:system
和權限也是可以的。
在開始時從adb shell執行命令時我得到了相同的錯誤但是我可以設置LD_LIBRARY_PATH
並運行正常:
./adb shell
export LD_LIBRARY_PATH=/data/data/myProject.path.package/lib:$LD_LIBRARY_PATH
/data/data/myProject.path.package/myCommand
所以問題是,如何從java Android項目中做到這一點?
注意:我在GT-P1010上使用Linux,Eclipse + Sequoyah,NDK-r5b,Android 2.3.6(API 10)。
解決:你可以使用exec(String prog, String[] envp)
。 在我的情況下,這是:
String[] envp = {"LD_LIBRARY_PATH=/data/data/cse.ecg.dcmtk/lib:$LD_LIBRARY_PATH"};
Runtime.getRuntime().exec(myCommand, envp);
現在的問題是,使用exec()
執行的進程無法解析主機名(它來自adb shell;設置了Internet權限)。 有什么暗示嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.