0

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

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

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

4

1 回答 1

1

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

不。

不完全是。

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

于 2013-05-23T19:01:18.230 回答