| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 3803 人关注过本帖
标题:如何让编译生成的C程序小于1KB
只看楼主 加入收藏
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1948
专家分:3019
注 册:2009-12-22
结帖率:89.13%
收藏
 问题点数:0 回复次数:6 
如何让编译生成的C程序小于1KB
程序代码:
#include <windows.h>
void _start() {
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    const char msg[] = "Hello World\n";
    DWORD written;
    WriteFile(hOut, msg, 12, &written, NULL);
    ExitProcess(0);
}


编译:

gcc -Os -ffunction-sections -fdata-sections -nostartfiles -fno-asynchronous-unwind-tables -fno-stack-protector -fomit-frame-pointer -Wl,--gc-sections,--entry=_start,--strip-all,--image-base=0x400000,--file-alignment=256 -lkernel32 main.c -o hello_win.exe


生成的文件还是无法在1KB之内,如何优化,可以让编译生成1KB以内?

图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 小于 main 生成 gcc 编译 
2025-12-04 19:59
yiyanxiyin
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:9
帖 子:363
专家分:2400
注 册:2023-6-29
收藏
得分:0 
不要用windows.h
2025-12-04 22:35
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1948
专家分:3019
注 册:2009-12-22
收藏
得分:0 
那你写一个看看。编译后看能有多小。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2025-12-05 11:09
szhgf
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-5-31
收藏
得分:0 
不要用windows.h
2026-01-04 16:11
yiyanxiyin
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:9
帖 子:363
专家分:2400
注 册:2023-6-29
收藏
得分:0 
不行就汇编嘛, tiny.s文件如下:
程序代码:
# 最小化版本 - 约500字节
.global _start
.section .text

_start:
    # 将字符串推入栈中(反向)
    push $0x0a646c72    # "\ndlr"
    push $0x6f57206f    # "oW o"
    push $0x6c6c6548    # "lleH"
    
    # write(1, esp, 14)
    push $4             # 系统调用号
    pop %eax
    push $1             # stdout
    pop %ebx
    mov %esp, %ecx      # 字符串地址
    push $14            # 长度
    pop %edx
    int $0x80
    
    # exit(0)
    inc %eax            # eax = 5 (但我们需要1)
    dec %eax            # 恢复为4
    dec %eax            # eax = 3
    dec %eax            # eax = 2
    dec %eax            # eax = 1 (sys_exit)
    xor %ebx, %ebx      # 返回码0
    int $0x80
   编译
as --32 tiny.s -o tiny.o
ld -m elf_i386 -s -N tiny4.o -o tiny
我这边ubuntu22.04, gcc9.4.0编译后可执行文件260B, 还能再小, 比如使用16位汇编
2026-01-05 10:36
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1948
专家分:3019
注 册:2009-12-22
收藏
得分:0 
C程序,不是用汇编

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2026-01-10 12:05
yiyanxiyin
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:9
帖 子:363
专家分:2400
注 册:2023-6-29
收藏
得分:0 
可以试一下8086dos,树莓派 单片机等
2026-01-10 12:18
快速回复:如何让编译生成的C程序小于1KB
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021104 second(s), 9 queries.
Copyright©2004-2026, BCCN.NET, All Rights Reserved