编写一个没有 main() 函数的合法 C 程序
来源:labs.iximiuz.com — 2026-07-26 · 11 points · by birdculture
📋 概述
一篇技术教程演示了如何编写一个完全符合 C 标准、能够编译运行却不包含 main() 函数的程序。通过利用 GCC 的 constructor 属性和自定义链接器入口点,程序可以在 main 被调用之前或完全绕过它执行逻辑。
🔑 核心要点
- 利用 GCC 的__attribute__((constructor))在 main 之前执行自定义函数
- 通过链接器脚本修改 _start 入口点,直接指定自定义函数为程序入口
- 使用 _exit() 系统调用在自定义函数中直接终止程序,永不进入 main
- 教程展示了 C 运行时底层启动机制(crt0)的内部原理和可干预点
💡 金句
C 语言不强制 main 函数——它只是约定。当你绕过约定时,就看到了编译器和链接器之间的真实边界。
← 返回 Hacker News 首页