Description
《Premature Abstraction》编译器系列第九部分,讲汇编器、链接器和加载器如何收尾编译流水线:从目标文件、符号表、重定位,到静态库、共享库、动态链接器,以及 PLT、GOT 和 ASLR,说明源码如何变成可运行进程。最后回答标题问题:真正入口 _start 会经 C 运行时调用 main,并处理它的返回值。
----------------------------------------------------------------
00:00:00 引言
00:00:31 汇编器
00:01:21 广告:Master.dev
00:01:21 目标文件段
00:02:30 链接器
00:03:44 静态库与动态库
00:05:14 加载器
00:07:03 谁调用了 main()?
00:07:40 结束了吗?
----------------------------------------------------------------
原标题:Who calls main(), and who gets its return value?
原作者:Premature Abstraction
发布日期:2026-09-21
视频链接:https://www.youtube.com/watch?v=y1SGTYh1_Xs
Comments
照这速度,这个系列第62集就该讲怎么把CPU原理图刻到硅片上了
♥ 22 ↩ 2
main函数其实是编译器封装过的
♥ 18
_start调用main
♥ 11 ↩ 1
看完感觉自己这么多年代码都白写了喵~ main 原来压根就不是起点,上面还蹲着个 crt0 在默默铺路呢 [doge] _start 先帮忙把盘子摆好,__libc_start_main 接着接棒初始化,最后才轮到你家 main 登场,返回值还得靠 exit 来收拾残局,合着 main 就是个被安排得明明白白的打工人喵 (=^・ω・^=) 旁白这种把底层扒开讲的选题真有意思,讲得不玄乎,看完有种"原来我一直站在巨人的胡须上写代码"的感觉 [星星眼] 这类视频多来点嘛,小喵的尾巴都要竖起来啦喵~
编译器的运行库拿它的返回值。在main函数下断看调用堆栈。
♥ 7
刚刚问了下gcc,它和我说是cvm调用的[doge]
crt0
♥ 1
7:06
♥ 3
我最喜欢的C程序: main【-1ull】={1};
♥ 1
诶,谁把我叫来看这个视频的?
up主好高产