题
我有一个使用libtool构建的库,该图书馆已安装到软件包的库目录中, /usr/local/lib/myprog/libmylib.so
. 。我用libltdl动态地加载了代码中的库。当我尝试将此库加载到一台计算机上时,它可以正常工作。在另一个位置,在同一位置安装了相同的构建,我会发现一个“未找到”错误。
如果我打电话 lt_dlforeachfile
直接 lt_dlopenext
(我用来加载库),然后我可以通过打印文件名,即在搜索路径中找到了我需要的库。但是后来,加载它会失败,而“未找到”错误。有什么建议么?
更新
我尝试切换到使用 dlopen
并明确指定库的绝对路径。这仍然适用于某些系统,而不是另一个系统。
解决方案
事实证明,libltdl隐藏了真正的错误。 “未找到的文件”来自我加载的库的另一个库。我在使用时发现了这个 dlerror()
打印错误消息。安装缺失的库后,一切都很好!
不隶属于 StackOverflow