最近碰到一个问题,dlopen 打开 lib 时提示 “No such file or directory”,问题奇怪在路径下其他 lib 都可以成功加载,唯独有两个 lib 报这个错误,但是我确实是有把 lib push 到板子上的,检查了半天不知道发生了什么问题。
先来看下错误提示与加载代码:
09-15 16:46:16.368 3167 3167 I MediaExtractorFactory: dlopen(/system_ext/lib/extractors/libMKVextractor.so) reported error No such file or directory
void *libHandle = android_dlopen_ext(
libPath.string(),
RTLD_NOW | RTLD_LOCAL, dlextinfo);
if (libHandle == nullptr) {
ALOGI("dlopen(%s) reported error %s", libPath.string(), strerror(errno));
continue;
}
网上搜索半天,发现一篇文章 http://www.lsjlt.com/news/368589.html 中有提到 “缺少依赖项”,这才反应到报错的两个 lib 有一个共同依赖库没有被 push 到板子上,将该lib push 到板子上问题就被解决了。
之前如果缺少哪一个 lib,运行过程中会直接提示 link error,这里用 dlopen 并不会直接提示缺少文件。