“ld”和“ld.so”之间的区别?

iBu*_*Bug 10 linker ld

虽然两者都被称为“链接器”并用于链接二进制文件,但我真的无法弄清楚它们之间的区别。谁能告诉我他们的区别?

Kus*_*nda 10

不要太技术化:两者都是“链接器”,即一种将一段编译代码与另一段编译代码组合/加载到另一段编译代码中的工具。

ld是静态链接器,而ld.so是动态链接器。

so我相信这些字母是“共享对象”的缩写,您通常会将其视为共享库的文件名后缀,即可以动态链接到程序中的库(一个库在多个程序之间“共享”) . 相比之下,静态库通常具有文件名后缀.a,表示“归档”(由ar实用程序创建)。

静态链接器在编译时链接程序或库,通常作为编译过程的最后一步,创建二进制可执行文件或库。在二进制可执行文件的情况下,它可能是一个静态二进制文件,所有库都加载到二进制文件本身中,或者它可能是一个动态链接的二进制文件,只有一些库静态链接。

动态链接器将在编译时动态链接的库在运行时加载到进程的地址空间中。

请参阅系统手册ldld.so系统手册。