搞嵌入式的同学,FFmpeg 你一定用过,QEMU 你大概率也跑过。但你可能不知道,这俩东西是同一个人写的。
没错,同一个人。
而且他不光写了这两个,他还写了C编译器、OpenGL实现、JS引擎、LTE软基站……甚至用一台破 PC 打破了超级计算机保持的圆周率世界纪录。
这个人叫 Fabrice Bellard,法国人,1972年出生。
今天我们就来聊聊这位大神和他那些里程碑式的项目,每一个都足以在技术史上留下浓墨重彩的一笔。
1. 17岁,汇编写压缩工具
1989年,Bellard 还在上高中。那时候 DOS 系统下硬盘又小又贵,他嫌空间不够用,直接用汇编写了一个可执行文件压缩工具 LZEXE。
注意,是汇编语言,不是C,不是Python,17岁的小伙子直接手写汇编。
LZEXE 压缩效果极好,朋友拿去用,放到 BBS 上,一下子火了,成了 DOS 时代最流行的压缩工具之一。
能将汇编写到这种程度,其底层功力以及对计算机基础的深刻理解可见一斑。
2. 24岁,手写 Java 虚拟机
1996年,Java 才刚出来不久,Sun 还在全世界推广“Write Once, Run Anywhere”的概念。
Bellard 直接写了一个 Java 虚拟机 Harissa,可以把 Java 字节码编译成 C 代码执行。
24岁,别人还在看 Java 入门教程,他已经在实现 JVM 的核心原理了。
3. 25岁,留名数学界——Bellard 公式
1997年,这哥们突然对圆周率计算产生了兴趣,改良了 Bailey–Borwein–Plouffe 公式,搞出了当时最快的圆周率计算算法,极大降低了时间复杂度。
数学界直接用他的名字命名——Bellard 公式。
一个程序员,在数学界留下了以自己名字命名的公式,这种操作放在哪个时代都够震撼的。
4. 26岁,嫌 Mesa 太慢,自己写了个 OpenGL
1998年,Bellard 在搞一个虚拟现实引擎,需要用到 OpenGL。当时的开源实现 Mesa 他觉得太慢了。
怎么办?自己写一个。
这就是 TinyGL,实现了 OpenGL 的核心子集。多小呢?比 Mesa 小几个数量级。多快呢?比 Mesa 和商用实现都快得多。
在资源受限的环境下,代码写得又小又快,才是真本事。Bellard 在这方面是教科书级别的存在。
5. 28岁,开源神器 FFmpeg 诞生
2000年,Bellard 以化名 Gérard Lantau 发布了 FFmpeg。
这个项目我就不多说了,搞音视频的、搞嵌入式多媒体的,谁没用过?VLC 播放器底层靠它,YouTube 转码靠它,你手机里的视频 App 大概率也在用它。
FFmpeg 的核心库 libavcodec 和 libavformat,支持的编解码格式多到数不清。它就是数字音视频领域的“瑞士军刀”,全球每天数十亿次音视频处理都离不开它。
一个人写出来的东西,撑起了半个互联网的视频基础设施。
用化名发布,不图名不图利,你品品。这无疑是开源实战领域的一座丰碑。
6. IOCCC 混淆大赛,连庄两年
IOCCC(国际C语言混淆代码大赛),这是全球C语言程序员的“武林大会”。参赛者要用最短、最晦涩的C代码实现最牛的功能,是展示C语言极致掌控力的顶级竞技场。
Bellard 2000年和2001年连续两次获奖,后来2018年又拿了一次。
看看他2000年的获奖代码,用快速傅里叶变换计算当时已知的最大素数 2^6972593-1:
int m=754974721,N,t[1<<22],a,*p,i,e=1<<22,j,s,b,c,U;
f(d){
for(s=1<<23;s;s/=2,d=d*1LL*d%m)
if(s<N)
for(p=t;p<t+N;p+=s)
for(i=s,c=1;i;i--)
b=*p+p[s],p[s]=(m+*p-p[s])*1LL*c%m,*p++=b%m,c=c*1LL*d%m;
for(j=0;i<N-1;){
for(s=N/2;!((j^=s)&s);s/=2);
if(++i<j)a=t[i],t[i]=t[j],t[j]=a;
}
}
几十行代码,实现了模块化快速傅里叶变换+大素数验证。这C代码写得,看一眼头皮发麻,但又不得不佩服其对C/C++语言的深度掌控。
7. TinyCC——世界最快最小的C编译器
2001年,从 IOCCC 比赛中还诞生了一个副产品:TinyCC(TCC)。
这是世界上最小、最快的C语言编译器。有多小?整个编译器加链接器就几百KB。有多快?
为了展示 TCC 的威力,Bellard 搞了一个 TCCBoot,只有 138KB,可以在 15秒内编译完整个 Linux 内核并且启动。
再说一遍:138KB 的引导程序,15秒编译完 Linux 内核并启动。
做过内核编译的同学都知道 make -j$(nproc) 要跑多久,这个数字简直离谱。
8. QEMU——虚拟化的基石
2005年,Bellard 发布了 QEMU。
搞嵌入式开发的同学对这个太熟了。交叉编译完内核和驱动,在没有开发板的时候,QEMU 就是你的救星。它可以用纯软件模拟 CPU、内存、I/O 设备,给操作系统营造一个在真实硬件上运行的假象。
QEMU 支持的架构包括 x86、ARM、MIPS、RISC-V……几乎覆盖了嵌入式开发用到的所有主流架构。
更重要的是,QEMU + KVM 的组合现在是云计算虚拟化的核心基础设施,全球无数数据中心都在用。
开发这种全系统模拟器的难度甚至超过操作系统本身。你不但要精通 OS 内核,还得掌握各种 CPU 架构的指令集、中断控制器、DMA、各类外设的时序……细节多到爆炸。
Bellard 一个人搞定了。
9. 一台 PC 打败超级计算机
2009年,Bellard 又去玩数学了。
他用一台不到 2000 欧元的普通桌面 PC:
| 配置项 |
规格 |
| CPU |
Core i7 @ 2.93GHz |
| 内存 |
6GB |
| 硬盘 |
7.5TB |
把圆周率算到了小数点后 2.7万亿位,打破了之前由世界排名第47位的 T2K Open 超级计算机创造的世界纪录。
一个人 + 一台 PC > 一台超级计算机。
这不是什么励志鸡汤,这是实打实发生过的事情。核心在于他的算法优化和对计算机硬件的极致利用——离散傅里叶变换的优化、磁盘 I/O 的精细管理、CPU 缓存的极限利用,每一项都是硬功夫。
10. 用 JavaScript 跑 Linux
2011年,他又不安分了。
这次他用 JavaScript 写了一个 PC 模拟器 JSLinux,直接让 Linux 在浏览器里跑起来。
这个模拟器用纯JS实现了:
- 32位 x86 兼容处理器
- 8259 可编程中断控制器
- 8254 可编程中断计时器
- 16450 UART
不仅能跑命令行,还支持图形界面——Windows 2000 都在浏览器里跑起来了。
放到2011年,这事在 Hacker News 上直接炸了。

11. 一个人搞定 LTE 软基站
2012年,通信领域。
Bellard 一个人花了 10个月,在一台 PC 上实现了一个高效的 LTE 软基站,支持 LTE TDD/FDD、NB-IoT、eMTC,最大支持 5 载波 2×2 MIMO 或 3 载波 4×4 MIMO。
搞通信的同学应该知道,基站的物理层(PHY层)是出了名的复杂,通常需要整个团队协作数年,用专门的 DSP 芯片来实现。
Bellard 用一台 i7 四核 PC + 10个月时间,全软件实现。
后来他和 Frank Spinelli 联合创立了 Amarisoft 公司,把这套技术商用了,给 4G/5G 运营商提供解决方案。
12. QuickJS——嵌入式 JS 引擎
2019年,Bellard 发布了嵌入式 JavaScript 引擎 QuickJS。
对嵌入式开发者来说,这个项目非常有价值:
- 支持 ES2020 标准
- 只有几个C文件,零外部依赖
- 可以轻松移植到各种嵌入式平台
- 单核 CPU 上 95 秒跑完 69000 个 ECMAScript 测试用例
如果你的嵌入式项目需要跑脚本、做热更新,QuickJS 是非常好的选择。代码量小、跑得快、容易集成,典型的 Bellard 风格。
2025年底他还发布了更极致的 MicroQuickJS,仅需 10KB RAM 就能编译和运行 JavaScript——直接把 JS 带进了单片机的世界。
他是什么样的人?
Bellard 极其低调。
互联网上他的照片屈指可数,几乎不接受媒体采访。有记者问他能不能介绍一下自己,他的回答是:
“除了说我是 FFmpeg 和 QEMU 等项目的开发者以外,其他的我不愿多谈。”
有人问他为什么要研究这么多不同方向,他说:
“总做同一件事常常让我感到无聊,所以我时不时会换个方向。”
他用化名做开源项目(FFmpeg 一开始的作者署名是 Gérard Lantau),不在乎名声,不追逐风口,只是纯粹地觉得某个东西有趣,就去做了。
Just for fun。

最后说两句
作为开发者,Bellard 的项目中有太多我们日常在用的东西了——QEMU、FFmpeg、QuickJS、TCC。每一个都是真正意义上的“小而美”:代码量小、运行效率高、几乎不依赖外部库。
这也是很多追求极致性能的后端 & 架构开发的核心精神:在有限的资源下,把事情做到极致。
Bellard 用他的整个职业生涯,给我们展示了一个程序员能到达的天花板。他的个人网站 bellard.org 上列着所有项目,建议每个对技术有追求的同学都去看看——不是为了膜拜,而是看看那些优雅、高效的代码,确实能学到东西。
这个世界上还有这样一种程序员:不开会、不写PPT、不刷面试题,只是安静地坐在电脑前写代码,然后改变了世界。