是否有可能(如果是的话,如何)确定应用程序在运行时使用的应用程序的共享库?基本上,我可以以编程方式获取输出ldd吗?首选的 C/C++ 解决方案不只是跳转到命令行上执行 ldd。
doAction()考虑以下几点:我有一个从共享库调用的驱动程序应用程序libfoo。我编译了一次应用程序,然后设置LD_LIBRARY_PATH到一个适当的目录,其中包含定义libfoo了doAction()符号的 a 。这样,我可以doAction()在不同libfoo的 s 中有多个实现,但只能编译一次应用程序。
一个真实世界的例子是教授有一个学生的班级实施doAction()。学生无需针对每个学生的实现编译测试工具,而是doAction()提交一个共享库,教授可以简单地更改LD_LIBRARY_PATH以评估每个学生。
我获取当前正在使用的库的目标是md5sum在运行时对库执行 an 以确保调用正确的库。在人为设计的示例中,所有学生都将提交md5sum他们的库,教授可以将正在运行的可执行文件 + 共享库(数据库查找,日志到文件,...)匹配给学生,以防止设置意外LD_LIBRARY_PATH影响另一个学生的成绩(忘记切换LD_LIBRARY_PATH到 David 的目录并再次使用 Bill 的目录运行libfoo)。