Android链接。那么对于命令行可执行文件呢?

Android链接。那么对于命令行可执行文件呢?,android,c,command-line,shared-libraries,Android,C,Command Line,Shared Libraries,我正在开发一个跨平台库,并尝试在Android上进行测试。我已经用ndk build编译了我的库,并且正在尝试编译和运行我们为库准备的命令行测试夹具 我使用adb push将测试夹具和.so放入/data/local/tmp和chmod中,将两者都设置为777 然后我使用adbshell运行测试,但得到以下错误 shell@android:/data/local/tmp $ ./mytest ./mytest link_image[1936]: 7289 could not load need

我正在开发一个跨平台库,并尝试在Android上进行测试。我已经用ndk build编译了我的库,并且正在尝试编译和运行我们为库准备的命令行测试夹具

我使用
adb push
将测试夹具和.so放入
/data/local/tmp
chmod
中,将两者都设置为777

然后我使用
adbshell
运行测试,但得到以下错误

shell@android:/data/local/tmp $ ./mytest
./mytest
link_image[1936]:  7289 could not load needed library 'libtconfig.so' for './mytest' (load_library[1091]: Library 'libtconfig.so' not found)CANNOT LINK EXECUTABLE

mytest
可执行文件和
libtconfig.so
都在同一个目录中。我假设它先在“.”目录中查找?

我发现我可以将路径
/data/local/tmp
添加到
LD\u LIBRARY\u path
,它会工作,但是在脚本中使用
adb shell
命令时,每个“
adb shell
”都是一个新实例,因此,
LD\u LIBRARY\u PATH
被重置

我发现我可以将路径
/data/local/tmp
添加到
LD\u LIBRARY\u PATH
中,它可以工作,但是在脚本中使用
adb shell
命令时,每个“
adb shell
”都是一个新实例,因此,
LD_LIBRARY_PATH
被重置了

我想我可能会遇到这个我想我可能会遇到这个是的,这完全符合预期。作为一个通用unixism,当前目录通常不在可执行或库搜索路径上,因为如果存在该目录,则有人会在用户可能访问的目录中留下与系统命令/库同名的恶意代码,从而为其他用户设置陷阱。是的,这完全符合预期。作为一个通用unixism,当前目录通常不在可执行或库搜索路径上,因为如果存在该目录,则有人会在用户可能访问的目录中留下与系统命令/库同名的恶意代码,从而为其他用户设置陷阱。