是静态或动态链接的`libc`和`crt1.o`?

时间:2013-05-23 18:58:30

标签: c linker static-linking dynamic-linking

我真的只是想要了解静态和动态链接。

当我调用unix> gcc myfile.c之类的编译驱动程序时,crt1.olibc.a(或libc.dylib)被链接以生成ld的可执行文件。我想猜测crt.o是静态链接的,标准C lib是动态链接的。是

感谢您的帮助。我想我可能需要一个关于链接的新文本:S `

1 个答案:

答案 0 :(得分:1)

  

想要猜测crt.o是静态链接的,标准C lib是动态链接的。是

没有

不完全是。

crt0.o及其系列(bundle1.odylib1.o等)是目标文件,而不是库,它们根本没有链接。 libc.a是一个静态库,因此当您链接它时,它将静态链接(即,它包含的目标文件将基本上复制到您的可执行文件)。但是,静态库也不是自己链接的。 libc.dylib是一个动态链接的库 - 猜测它在使用时是如何链接的(当然,动态地,在这种情况下,库本身是一个链接的,正确的可执行文件)。

相关问题