当文件位于正确的路径时,dlopen失败并找不到文件

时间:2010-10-14 20:42:00

标签: libtool dlopen

我有一个使用libtool构建的库,它安装在包的库目录/usr/local/lib/myprog/libmylib.so中。我正在使用libltdl在我的代码中动态加载库。当我尝试在一台机器上加载这个库时,它工作得很好。另一方面,如果同一个版本和库安装在同一位置,我会收到“找不到文件”错误。

如果我在lt_dlforeachfile(我用来加载库)之前直接调用lt_dlopenext,那么我可以通过打印出文件名来查看我在搜索路径中找到了我需要的库。但是之后不久,加载失败并显示“找不到文件”错误。有什么建议吗?

更新

我尝试过切换到使用dlopen并明确指定库的绝对路径。这仍然适用于某些系统而不是另一种系统。

1 个答案:

答案 0 :(得分:1)

原来,libltdl隐藏了真正的错误。 “找不到文件”来自我加载的库所依赖的另一个库。我在使用dlerror()打印错误消息时发现了这一点。安装丢失的库后,一切都很好!