compilation - 动态链接和静态链接的指令点值

标签 compilation architecture static-linking dynamic-linking intel-pin

通过使用 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/

相关文章:

java - 使用 Java 6 执行 Java 5 代码

c++ - 如何从主应用程序的 GetInstance 获取引用?

python - python 编译C函数的问题

同一项目中的 Java Spring Boot MVC 和 CLI API

static-linking - 链接 Free Pascal 程序以包含依赖项

android - 在使用 android studio 运行 Espresso 测试时。我收到以下错误

architecture - 用于网络或架构图的 Balsamiq

http - 为什么网络需要 HTTP?

ruby - 编译 Ruby C 扩展时如何静态链接外部库

c - 静态链接 glibc,但使用 GCC 动态链接其他一些库