You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCC编译Windows可执行文件无法缩小至15KB以下的问题求助

如何在Win10 x64下用GCC 13.2.0生成小于15KB的PE可执行文件?

你遇到的15KB体积下限,本质是GCC默认链接了C标准库(libc)及配套启动代码,这些组件会给可执行文件带来固定的基础开销——哪怕你的业务代码极简,也无法摆脱这部分体积。要突破这个限制,核心是切断标准库依赖,直接基于Windows系统接口构建程序,具体实现方式如下:

核心优化方案

  • 改用WinMain作为程序入口,避开标准main函数对应的C库启动初始化逻辑
  • 添加链接标志-nostdlib,完全禁用标准库和默认启动文件的自动链接
  • 直接调用Windows系统API完成程序退出,替代标准库的exit函数

示例代码

#include <windows.h>

int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
    // 可在此添加自定义业务逻辑,比如调用MessageBox等Windows API
    ExitProcess(0); // 直接调用系统内核API完成退出,无需依赖标准库
}

编译命令

gcc tiny.c -o tiny.exe -Os -s -nostdlib -lkernel32
  • -Os:开启针对体积的代码优化
  • -s:移除可执行文件中的符号表与调试信息
  • -nostdlib:禁止链接标准C库及默认启动代码
  • -lkernel32:仅链接必要的Windows内核库(提供ExitProcess等核心系统API)

通过上述方法,生成的可执行文件体积可压缩至3-4KB,完全低于15KB的初始下限。

补充说明:最初使用的-Os(而非误写的0s)和strip命令,只能优化业务代码本身,但无法移除标准库带来的固定体积开销;只有通过-nostdlib彻底切断标准库依赖,才能实现大幅缩容。

内容的提问来源于stack exchange,提问作者SaintFTS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:32:06