问题是,我发现Mac OS X有一个dyld(我理解为动态链接器),但也有一个简单的链接器ld(我理解为静态链接器)。
问题是:它真的如此吗?两个连接子?一个静态和一个动态?
为什么他们决定要两个? Linux只有一个链接器(ld),可以进行静态和动态链接。
答案 0 :(得分:4)
你误解了"链接"的含义。或者,想到另一种方式,你还没有意识到它有两个含义。
如果有帮助,请将dyld
视为动态加载程序,而不是"链接器"。 dyld
是将可执行文件引用的动态库加载到进程的地址空间的程序。它仍然涉及链接,因为它需要解析符号引用。
您永远不会在构建过程中调用dyld
。您总是使用ld
,或者更常见的是,您要求编译器链接您的程序,并代表您调用ld
。 dyld
仅在运行时使用。
当你声称Linux没有这种区别时,你就错了。 Linux有一个动态加载器ld.so
,它与静态链接器ld
不同。