我有一个使用libtool构建的库,该图书馆已安装到软件包的库目录中, /usr/local/lib/myprog/libmylib.so. 。我用libltdl动态地加载了代码中的库。当我尝试将此库加载到一台计算机上时,它可以正常工作。在另一个位置,在同一位置安装了相同的构建,我会发现一个“未找到”错误。

如果我打电话 lt_dlforeachfile 直接 lt_dlopenext (我用来加载库),然后我可以通过打印文件名,即在搜索路径中找到了我需要的库。但是后来,加载它会失败,而“未找到”错误。有什么建议么?

更新

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

有帮助吗?

解决方案

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top