如何从 C 的可执行 elf 文件中的名称获取函数或全局变量的地址?

How to get address of function or global variable from its name in executable elf file for C?

如何从可执行elf文件中的名称获取函数或全局变量的地址? dlsym() 可以得到函数在动态库文件中的地址。但它不适用于可执行的 elf 文件。在解析 ELF 文件之前,我想检查是否有一个库为可执行的 elf 文件提供相同的功能?然后我可以从它的名称中获取函数或全局变量的地址。

如果您使用 -Wl,-E(或者它的各种变体,例如 -export-dynamic)编译可执行文件,那么链接器将为可执行文件生成一个动态部分,您可以访问它的符号dlsymNULL 句柄,例如 dlsym (NULL, "foo").