与 VCC 相比,为什么 GCC 会产生巨大的可执行文件?

发布于 2024-11-30 08:36:25 字数 223 浏览 1 评论 0原文

我有一个项目并不是很大。使用 Visual Studio 的 C++ 编译器,可执行文件大小为 100+KB。但对于 mingw GCC,它会增加到 500+ KB。同样的事情也发生在 Linux 上。这是针对发布版本的。对于调试构建,GCC 生成 1.4MB,而 VS 的 C++ 编译器仅生成 400+KB。到底是什么原因造成如此巨大的差异呢?它与静态/动态链接有什么关系吗?我可以做什么来减少 GCC 生成的可执行文件的大小?

I have a project that's not really big. With Visual Studio's C++ compiler the executable is 100+KB. But with mingw GCC it goes up to 500+ KB. Same thing happens on Linux. That's for the release build. For debug build GCC produces 1.4MB while VS's C++ compiler only produces 400+KB. What's the reason that causes such a huge discrepancy? Does it have anything to do with static/dynamic linking? What can I do to reduce the executable size produced by GCC?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

红ご颜醉 2024-12-07 08:36:25

有关如何缩小 GCC 输出大小的信息,请参阅此页面:http://wiki.wxwidgets.org/Reducing_Executable_Size

See this page on how to shrink GCC output size: http://wiki.wxwidgets.org/Reducing_Executable_Size

若沐 2024-12-07 08:36:25
  • 您是否将 -s 标志传递给 GCC?

  • Visual Studio 与 CRT 的链接是静态还是动态?海湾合作委员会怎么样? VC 很可能是动态链接(/MD 标志,而不是 /MT),而 GCC 是静态链接(-static-libgcc 标志,和其他)...尝试使它们一致,然后看看是否有差异。

    一种判断方法是检查您的 VC 链接可执行文件是否依赖于 msvcr80.dll(或其他版本),并查看您的 GCC 链接可执行文件是否依赖于某些 mingw DLL。如果是的话,那么它们就是动态链接的;如果它们确实独立运行,那么它们就是静态链接的。

  • Did you pass the -s flag to GCC?

  • Is Visual Studio linking with the CRT statically or dynamically? How about GCC? It's likely that VC is linking dynamically (/MD flag, instead of /MT) whereas GCC is linking statically (-static-libgcc flag, and otehrs)... try making them consistent and then seeing if there's a difference.

    One way to tell is to check if your VC-linked executable depends on msvcr80.dll (or a different version), and to see if your GCC-linked executable depends on some mingw DLL. If they do, then they're dynamically linked; if they truly run standalone, then they're statically linked.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文