2010-10-14 157 views
1

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

如果我在lt_dlopenext(我用来加载库)之前直接调用lt_dlforeachfile,那么通过打印文件名可以看到我需要的库已经在搜索路径中找到。但之后立即加载失败,出现“文件未找到”错误。有什么建议么?

UPDATE

我曾尝试切换到使用dlopen,并明确指明了该库的绝对路径。这仍然适用于某些系统,而不适用于其他系统。

回答

1

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

+0

调试这种错误的另一种方法是给出[这里](http://stackoverflow.com/a/9567335/1043187)。 – BenC 2015-04-13 04:12:56

相关问题