摘要:
我们知道函数名就是一个内存地址,这个地址指向函数的入口。调用函数就是压入参数,保存返回地址,然后跳转到函数名指向的代码。问题是,如果函数在共享库中,共享库加载的地址本身就不确定,函数地址也就不确定了,那如何调用共享库中的函数呢?这就是本文要回答的。我们先来看一小段代码(test.c):#include <stdio.h>void hello_world(void){ printf("Hello world!\n"); return;}int main(int argc, char* argv[]){ hello_world(); return 0;}编译并反汇编 阅读全文