gpt4 book ai didi

c - 静态与动态链接

转载 作者:太空狗 更新时间:2023-10-29 15:35:04 26 4
gpt4 key购买 nike

我正在尝试了解 ELF 对于静态链接程序与动态链接程序的区别。

我知道静态链接是这样工作的: enter image description here

在我的例子中,我有两个文件,foo.cbar.c。我也有他们的目标文件; foo.obar.o。使用 objdump 命令,我可以看到每个文件中的重定位。

如何静态链接foo.obar.o

如何动态链接foo.obar.o

如何查看输出文件的差异?

最佳答案

动态链接是当今大多数链接器的默认模式。如果你想静态链接,你必须在链接时使用 -static 标志。澄清一下,当我说“动态链接”与“静态链接”时,我指的是与外部库的链接,而不是生成可以链接(动态或静态)的库。

在你传递给链接器的目标文件中看不出差异,因为它与编译器和目标文件生成无关,结果只能在链接后的结果可执行程序中看到,并且最大的不同是可执行文件很可能会更大。

生成的完全链接的可执行文件会更大,因为所有库(其中有静态库)实际上都将按字面意思链接到可执行程序中。它基本上包括库目标文件和您自己的目标文件。实际上,在 POSIX 平台上,静态库只是目标文件的归档。

关于c - 静态与动态链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34453675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com