gpt4 book ai didi

linux - ld-linux.so.2 和 linux-gate.so.1 是什么?

转载 作者:IT老高 更新时间:2023-10-28 12:41:15 33 4
gpt4 key购买 nike

当我运行 ldd program 我得到表单的输出

    linux-gate.so.1 =>  (0xb77ae000)
libstdc++.so.6 => /lib/libstdc++.so.6 (0xb76bc000)
libm.so.6 => /lib/libm.so.6 (0xb7691000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7674000)
libc.so.6 => /lib/libc.so.6 (0xb74c2000)
/lib/ld-linux.so.2 (0xb77af000)

您能解释一下输出以及 linux-gate.so.1ld-linux.so.2 显示与其他条目不同的原因吗?他们的角色是什么?

最佳答案

我希望您不是在询问主要条目,它们表明对于请求的库 libm.so.6,它位于文件 /lib/libm.xml 中。 so.6,例如,但询问的是两个异常值。

为什么它们的显示方式不同?对于 linux-gate.so.1 这是因为它实际上不是磁盘上的文件 - 它被内核公开为进行系统调用的机制。对于 /lib/ld-linux.so.2,这是因为这是用于实际运行应用程序的 程序 解释器。

有一个不错的blog entry描述了 linux-gate.so,它解释得很好。

对于 /lib/ld-linux.so.2,您必须了解一点启动 ELF 二进制文件时会发生什么。简短的回答是这些类型的二进制文件的内核处理程序使用此文件来启动应用程序。

这个程序的主要目的是将二进制文件映射到内存中,加载程序中任何引用的库(例如前面提到的 libm.so.6),然后将控制权交给正在执行的二进制文件的起始地址.

这个程序被定义为ELF文件结构的一部分,在程序头的INTERP部分。对于 32 位 linux 二进制文件,这是 32 位解释器的典型名称。对于 64 位二进制文​​件,您会发现它通常称为 ld-linux-x86_64.so.2(对于 64 位 x86 平台)。

您可以使用 readelf -l 和 INTERP 部分自行确定此信息:

INTERP         0x0000000000000238 0x0000000000400238 0x0000000000400238
0x000000000000001c 0x000000000000001c R 1
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]

关于linux - ld-linux.so.2 和 linux-gate.so.1 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19981862/

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