如何查找在启动应用程序期间加载的共享对象?

时间:2010-03-02 07:59:42

标签: linux shared-objects dlopen

我知道使用dlopen和RLTD_NOLOAD可以找出是否已经加载了共享对象。但是,如果在应用程序启动期间链接到可执行文件并由链接器加载,则这似乎不起作用。

我的意思是,让我说我有mylib.so并用dlopen加载它。之后,如果我使用RLTD_NOLOAD进行dlopen,我会按预期获得句柄。

但是,如果我将mylib.so链接到应用程序(makefile中的-lmylib),则dlopen将返回NULL。

如果共享对象直接链接到exec,我如何获得共享对象的句柄。并没有明确加载?

先谢谢

1 个答案:

答案 0 :(得分:1)

这太晚了,但是 -

dlopen(NULL, RTLD_LAZY/*Any load option u want*/)将获得二进制文件的句柄。它应该能够在它加载的二进制或共享库中找到任何符号。我认为这是一个很好的起点。