Answers:
不用太技术性:两者都是“链接器”,即一种将一段编译的代码与另一段编译的代码组合/加载到另一段的工具。
ld
是静态链接器,ld.so
而是动态链接器。
so
我相信这些字母是“共享对象”的缩写,您通常会看到它是共享库的文件名后缀,即可以动态链接到程序中的库(一个库在多个程序之间“共享”) 。相反,静态库通常具有文件名后缀.a
,用于“存档”(由ar
实用程序创建)。
静态链接器通常在编译时将程序或库链接为编译时的最后一步,以创建二进制可执行文件或库。对于二进制可执行文件,它可以是静态二进制文件,并且所有库都已加载到二进制文件本身,也可以是动态链接的二进制文件,其中只有一些库是静态链接的。
动态链接程序将在编译时动态链接的库在运行时加载到进程的地址空间中。
请参阅系统上ld
和ld.so
系统上的手册。