gpt4 book ai didi

linker - 为什么需要一个目标文件来生成可执行文件?

转载 作者:行者123 更新时间:2023-12-04 03:38:57 25 4
gpt4 key购买 nike

当我们编译代码时,将生成一个目标文件。在链接过程中,从该目标文件生成一个可执行文件。

为什么我们需要一个目标文件?目标文件有什么用?不可能直接生成可执行文件吗?毕竟,我们使用可执行文件来运行该程序。

最佳答案

目标文件是链接器用来构建完整的可执行文件(或库)的文件。

通常,您可以让编译器“直接”输出可执行文件,语法取决于编译器。例如,在GCC中:

gcc foo.c bar.c ...

将产生一个可执行文件,并且不会保留任何中间目标文件(但是可能已经生成了一个-然后删除了该文件)。

目标文件用于进行增量构建。您将每个源文件(或源文件组)编译为目标文件,然后将所有文件链接到一个可执行文件中。这使您仅可以重新编译自上次构建以来已更改的源文件,从而可以节省大量时间。
或者,您可以使用相同的目标文件来链接不同的可执行文件(例如,重复使用构建的各个部分以生成可执行文件和共享库),与每次编译所有文件相比,这又节省了时间和资源。

从理论的角度来看,不需要“目标文件”。它们只是非常实用的(对于某些(大多数?)工具链,实际上在技术上是必需的,因为汇编器知道如何生产,链接器知道如何链接)。

关于linker - 为什么需要一个目标文件来生成可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14001202/

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