【问题标题】:why executable is smaller than the library which is statically linked with application project?为什么可执行文件小于与应用程序项目静态链接的库?
【发布时间】:2016-12-27 10:39:52
【问题描述】:

我在 Visual Studio 中创建了 Windows 应用程序项目。 OpenSSL 库(大小:15Mb)与应用程序项目静态链接。

但是,应用程序(可执行文件).exe 文件的大小仍然约为 2 MB。

这怎么可能? 谁能解释一下链接器是如何做到的?

【问题讨论】:

    标签: c visual-studio static-linking


    【解决方案1】:

    在链接期间,链接器只会从您的应用程序所需的 OpenSSL 库中挑选代码。它不会包含整个 OpenSSL 库。因此,您的可执行文件可能比库小得多。

    基本上,静态库只是目标文件的容器。每个目标文件都包含单个编译单元的代码。

    【讨论】:

    • 每个目标文件都包含单个函数的代码 嗯,不是真的,通常每个目标文件都是单个翻译单元(即 .c/. cpp 文件)。
    • @MatteoItalia:感谢您指出每个对象...中的错误。我已经相应地更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 2013-06-24
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 2018-06-07
    相关资源
    最近更新 更多