虽然两者都被称为“链接器”,并用于链接二进制文件,但我不知道它们之间有何不同。有人能告诉我他们的不同之处吗?
发布于 2017-04-08 07:34:02
两者都是“链接器”,即将一段编译代码与另一段编译代码结合/加载到另一段编译代码中。
ld是一个静态链接器,而ld.so是一个动态链接器。
我相信,字母so是“共享对象”的缩写,您通常会看到它是共享库的文件名后缀,即可以动态链接到程序中的库(一个库在多个程序之间“共享”)。相反,静态库的文件名通常为.a,用于“归档”(由ar实用程序创建)。
静态链接器在编译时链接程序或库,通常作为编译过程的最后一步,创建二进制可执行文件或库。对于二进制可执行文件,它可能是静态二进制文件,所有库都加载到二进制文件中,也可能是动态链接的二进制文件,只有一些库静态链接。
动态链接器在运行时将编译时动态链接的库加载到进程的地址空间。
请参阅系统上的ld和ld.so手册。
https://unix.stackexchange.com/questions/356709
复制相似问题