1

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

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

更新

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

4

1 回答 1

2

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

于 2010-10-15T17:59:15.830 回答