gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:39 24 4
gpt4 key购买 nike

我知道将 dlopen 与 RLTD_NOLOAD 一起使用可以查明共享对象是否已加载。但是,如果 so 链接到可执行文件并在应用程序启动期间由链接器加载,这似乎不起作用。

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

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

如果共享对象直接链接到 exec,我如何获取共享对象的句柄。并且没有显式加载?

提前致谢

最佳答案

这已经太晚了,但是 -

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

关于linux - 如何查找在应用程序启动期间加载的共享对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2361622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com