当前位置:首页>Linux>406 KB 装进 115 个 Linux 命令——CFBox v0.2.0 发布

406 KB 装进 115 个 Linux 命令——CFBox v0.2.0 发布

  • 2026-10-11 07:34:58
406 KB 装进 115 个 Linux 命令——CFBox v0.2.0 发布

(抱歉格式可能看起来很烂,笔者还在外地开忙,没有提前编辑好格式QAQ)

一个单文件、零依赖的 C++23 BusyBox 替代品,体积压缩 14%,测试全绿。
以下数据是笔者截至到5月30日发稿时的数据!

一句话介绍

CFBox 用现代 C++ 重写了 115 个常用 Linux 命令行工具,编译后只有一个 406 KB 的 ELF 二进制——通过软链接即可当 ls、cat、grep、cp、tar…… 用。

v0.2.0 做了什么

体积从 473 KB 降到 406 KB,减了 14%。这不是靠 strip 或 UPX,而是从源头砍掉了 C++ iostream 运行时:

  • 彻底移除 <fstream> / <sstream> / <iostream>——全部替换为 <cstdio> 的 FILE* + fgets / sscanf
  • std::stoi 全量替换为 std::strtol——避免 -fno-exceptions 下解析失败直接 abort()
  • 统一错误输出宏 CFBOX_ERR——102 个 applet 一刀切,告别散落的 fprintf(stderr, ...)
  • fs::for_each_entry() 等文件系统工具——chown / chgrp / chmod 三个 applet 共用一套递归遍历,消掉大量重复代码

所有改动经过 379 个 GTest 测试、零 warning 编译、ASan 零泄漏验证。


依赖后续慢慢持续优化!

BusyBoxToyBoxCFBox
语言CCC++23
编译产物多文件 / 单文件单文件单文件
二进制大小~1.5 MB+~300 KB406 KB
依赖glibcglibcglibc + libstdc++ + libm
代码风格宏 + 全局状态宏 + 全局状态现代 C++ / RAII

CFBox 的定位不是取代 BusyBox(那不现实),而是提供一个代码可读、适合学习和二次开发的轻量替代。每个 applet 就是一个 .cpp 文件,读起来像教科书示例,不是黑魔法。(争取做到)


新增命令

chgrp、chmod、chown、clear、mountpoint、which——6 个运维高频命令。

下一步

v0.3.0 将推进核心命令的功能深度(tail -f、cp -a、test POSIX 全覆盖、ls -R --color),目标把功能覆盖从 ~30% 拉到 ~70%。以及顺便的,继续完善基建,和自动化benchmark进行性能检测!

链接

  • GitHub:
https://github.com/Awesome-Embedded-Learning-Studio/cfbox
  • CFBox 是
Awesome Embedded Learning Studio

的开源项目,欢迎 Star / PR / Issue。

最新文章

随机文章