C 语言程序没有 main() 也能跑?

Writing a (valid) C program without main()

C 语言程序没有 main() 也能跑?

大多数编程语言都从 main() 函数开始执行,但 C 语言其实可以打破这个规则。本文带你深入 C 编译流程,从预处理器、编译器、汇编器到链接器,一步步拆解程序是如何被构建的。你会发现,main() 并非真正的入口,真正的起点是 _start。通过手动编写汇编代码并绕过 C 运行时库,我们成功构建了一个没有 main() 函数却能正常运行的 C 程序。这不仅揭示了 Linux 系统调用的底层机制,也让我们更理解操作系统如何启动一个程序。

当你学会 C 程序是如何被编译、链接和执行的,你实际上是在学习 Linux API 的真实运作方式。

同日更多故事

2026-07-25