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

问题描述:

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

我的意思是,让我说我有mylib.so并加载它与dlopen。后来,如果我使用RLTD_NOLOAD制作dlopen,我会按预期得到句柄。

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

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

由于提前

这是太晚,但 -

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