通过使用 Intel 的 pin,我打印出了具有动态链接和静态链接的程序的指令指针 (ip) 值。
而且我发现它们的 ip 值有很大不同,即使它们是同一个程序。
具有静态链接的程序显示其第一个 ip 值是 0x400f50。
但是具有动态链接的程序显示其第一个 ip 值是 0x7f94f0762090
我不知道为什么他们有这么大的差距。
如果有人能帮我找出原因,我将不胜感激
最佳答案
I am not sure why they have that quite a large gap.
因为动态链接程序不会在二进制文件中开始执行:在控制权转移到 _start 之前,前几千条指令在动态链接器 (
在主可执行文件中。ld-linux
) 中执行
另请参阅this answer .
关于compilation - 动态链接和静态链接的指令点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62125651/