【问题标题】:Android link .so for command line executable?命令行可执行文件的Android链接.so?
【发布时间】:2013-01-09 01:14:46
【问题描述】:

我正在开发一个跨平台库,并尝试在 Android 上进行测试。我已经使用 ndk-build 编译了我的库,并且正在尝试编译和运行我们为该库提供的命令行测试装置。

我使用adb push 将测试夹具和.so 放在/data/local/tmpchmod 中都放在777 中。

然后我使用adb shell 运行测试,却得到如下错误

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 都在同一个目录中。我会假设它看起来在“。”目录优先?

【问题讨论】:

标签: android c command-line shared-libraries


【解决方案1】:

我发现我可以将路径/data/local/tmp 添加到LD_LIBRARY_PATH 并且它会起作用,但是当在脚本中使用adb shell 命令时,每个“adb shell”都是一个新实例,所以LD_LIBRARY_PATH 被重置

【讨论】:

  • 是的,这完全符合预期。作为一般的unixism,当前目录通常不在可执行文件或库搜索路径上,因为将其放在那里可以让某人通过在用户可能访问的目录中留下与系统命令/库同名的恶意代码来为其他用户设置陷阱.
猜你喜欢
  • 1970-01-01
  • 2020-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-22
  • 1970-01-01
  • 2011-06-07
  • 2015-05-12
相关资源
最近更新 更多