gpt4 book ai didi

c - dlopen:是否可以捕获未解析的符号, "manually"在它们发生时解析它们?

转载 作者:IT王子 更新时间:2023-10-29 01:24:47 27 4
gpt4 key购买 nike

是否可以在未解析的符号引用发生时捕获它们,以便调用一个函数来尝试根据需要解析符号?或者是否可以在运行时向动态符号表添加新符号而不创建库文件并打开它?我在 GNU/Linux 上,使用 GCC。 (对其他 Unix 的可移植性会很好,但这不是关键问题。)

提前致谢!

编辑:我应该更详细地说明我正在尝试做什么。我想为一种编程语言编写一个解释器,它应该支持编译的(dlopen'ed)和解释的模块。我希望从已编译模块调用在别处定义的函数由链接器解析,以避免在每次调用时查找函数,但对解释代码的调用将无法解析。我想捕获这些调用,以便我可以在需要时调用适当的解释函数(或者如果该函数不存在则发出错误信号)。

最佳答案

如果您知道缺少哪些符号,您可以只用它们编写一个库,并在应用程序执行之前 LD_PRELOAD 它。

如果您没有丢失的符号列表,您可以通过在二进制文件上使用“nm”或“objdump”来发现它们,并在此基础上编写一个脚本来构建在应用程序执行之前使用缺少的符号库,然后 LD_PRELOAD 它也是如此。

此外,您还可以使用 gdb 将新“代码”注入(inject)应用程序,使函数指向您需要的内容。

最后,您还可以覆盖一些 ld.so 函数来检测丢失的符号,并对它们采取一些措施。

但无论如何,如果您能解释您想要完成的目标,那么提供合适的解决方案会更容易。

关于c - dlopen:是否可以捕获未解析的符号, "manually"在它们发生时解析它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7116314/

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