Mac OS X 为动态加载提供了一个有用的库,称为 dyld。在动态加载处理的许多有趣的函数中,有一些函数允许安装回调,当加载或卸载图像时,dyld 将分别调用这些回调,分别由dlopen
和调用dlclose
。这些函数分别是void _dyld_register_func_for_add_image(void (*func)(const struct mach_header* mh, intptr_t vmaddr_slide))
和void _dyld_register_func_for_remove_image(void (*func)(const struct mach_header* mh, intptr_t vmaddr_slide))
。
我知道 Linux 不可能有一个确切的端口,因为 dyld 函数处理 mach-o 文件,而 Linux 使用 ELF 文件。
那么,是否有相当于 Linux 的 dyld 库。或者,至少,在任何 Linux 库中是否有这两个函数的等价_dyld_register_func_for_add_image
物_dyld_register_func_for_remove_image
?或者我是否必须自己实现这两个版本,这并不难,但我必须找到一种方法来制作dlopen
和dlclose
调用回调函数,只要它们被调用。
编辑
为了让事情更清楚,我需要创建一个具有回调函数的库,只要外部库由dlopen
. 我的回调函数必须对任何动态加载的库执行一些操作。