我有 2 个共享库:lib1.so和lib2.so。
lib1.so包含一些在lib2.so中定义的函数。从 C 程序中,我使用以下调用加载lib1.so :
dlopen( "lib1.so", RTLD_NOW );
这两个库都显示在当前目录中。我的程序可以在桌面 Linux(Ubuntu、Debian)下运行,但不能在 Android 下运行。在 Android 下 dlopen 返回一个错误并退出。我试图设置:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
但这无济于事。
我很困惑,为什么这段代码在 Android 下不起作用。我在 Android 的动态链接器上找不到任何好的文档。所以,我没有解释为什么它不起作用。
细节:
- 带有 Linux 内核 2.6.35 armv7l 的 Android
- objdump 显示 lib1.so 需要 libc.so 和 lib2.so
- objdump 显示 lib2.so 只需要 libc.so