gpt4 book ai didi

c++ - 为什么链接到 LIB 会显着增加二进制文件的大小

转载 作者:行者123 更新时间:2023-11-30 05:36:33 26 4
gpt4 key购买 nike

假设我有一个模块(DLL/EXE),它用 N 个对象定义了一个特定的流程,在编译/链接之后,模块的大小是 X。

如果我决定将该模块分解为一个主要的可执行文件和一个帮助程序 LIB 文件,精确计算我之前描述的 N 个对象,可执行文件的总体大小是否会保持不变?

我知道在链接期间,编译器决定将 LIB 的哪些部分复制到可执行文件中,因此我希望可执行文件的整体大小小于或等于可执行文件。

我已经定义了 LIB 项目,优先考虑大小而不是速度和最小大小 (O1)。

只是为了把事情弄清楚,我决定在 LIB 中实现一个小的 HelloWorld 函数(全局函数),并从主要可执行文件中删除对 LIB 对象的所有引用,并执行以下命令

#include "../LibObject/Function.h"
void main()
{
HelloWorld();
}

可执行文件的整体大小一直保持在我调用原始对象时的大小,怎么回事?

最佳答案

静态库在几乎所有方面都只是对象模块的集合(将它们视为 .obj.zip);无论您是单独传递所有目标文件还是一起传递静态库中的链接器,都没有真正的区别(死函数消除,如果可能的话,以相同的方式执行),所以您看到相同的效果有或没有中间库步骤的可执行文件大小是完全预期的。

关于c++ - 为什么链接到 LIB 会显着增加二进制文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33517277/

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